brim.utilities.plotting.Plotter#

class brim.utilities.plotting.Plotter(inertial_frame, zero_point, ax=None, **inertial_frame_properties)#

Bases: Scene3D

Plotter for models created by BRiM using SymMePlot.

Attributes

annot_coords

Coordinate where the annotation text is displayed.

annot_location

String describing where the annotation should be displayed.

artists

Artists used to plot the object.

axes

Axes used by the scene.

children

Plot objects.

inertial_frame

The reference frame with respect to which all objects will be oriented.

plot_objects

Plot objects.

values

List of evaluated values for the object's variables.

zero_point

The absolute origin with respect to which all objects will be positioned.

Methods

__init__

add_body

Add a sympy body to the scene.

add_connection

Add a connection to the plotter.

add_frame

Add a sympy ReferenceFrame to the scene.

add_line

Add a sympy Vector to the scene.

add_load_group

Add a load group to the plotter.

add_model

Add a model to the plotter.

add_plot_object

Add a plot object to the scene.

add_point

Add a sympy Vector to the scene.

add_vector

Add a sympy Vector to the scene.

animate

Animate the scene.

auto_zoom

Auto scale the axis.

clear

Clear the axes.

evaluate_system

Evaluate the system using the function created with lambdify_system.

from_model

Initialize the plotter.

get_expressions_to_evaluate

Return a tuple of the necessary expressions for plotting.

get_plot_object

Return the plot_object based on a sympy object.

lambdify_system

Lambdify the system.

plot

Plot all plot objects.

set_visibility

Hide or show a plot_object based on a sympy_object.

update

Update the objects on the scene, based on the currect values.

__init__(inertial_frame, zero_point, ax=None, **inertial_frame_properties)#
__weakref__#

list of weak references to the object (if defined)

add_body(body, **kwargs)#

Add a sympy body to the scene.

Parameters:
  • body (RigidBody or Particle) – The body that should be plotted.

  • **kwargs (dict, optional) – Kwargs that are parsed to both internally used plot objects.

Returns:

The added plot object.

Return type:

PlotBody

add_connection(connection: ConnectionBase, **kwargs)#

Add a connection to the plotter.

Parameters:
add_frame(frame: ReferenceFrame, origin: Point | Vector | None = None, **kwargs)#

Add a sympy ReferenceFrame to the scene.

Parameters:
  • frame (ReferenceFrame) – The reference frame that should be plotted.

  • origin (Point, Vector, optional) – The origin of the reference frame. Default is the zero_point.

  • **kwargs (dict, optional) – Kwargs that are parsed to plot object.

Returns:

The added plot object.

Return type:

PlotFrame

add_line(points: Iterable[Point | Vector], name: str | None = None, **kwargs)#

Add a sympy Vector to the scene.

Parameters:
  • points (list of Point or Vector) – The points or vectors through which the line should be plotted.

  • name (str, optional) – The name of the line. Default is None.

  • **kwargs – Kwargs that are parsed to plot object.

Returns:

The added plot object.

Return type:

PlotLine

add_load_group(load_group: LoadGroupBase, **kwargs)#

Add a load group to the plotter.

Parameters:
add_model(model: ModelBase, **kwargs)#

Add a model to the plotter.

Parameters:
add_plot_object(plot_object: PlotBase)#

Add a plot object to the scene.

Parameters:

plot_object (PlotBase) – The plot object that should be added.

add_point(point: Point | Vector, **kwargs) type[symmeplot.core.plot_base.PlotBase]#

Add a sympy Vector to the scene.

Parameters:
  • point (Point or Vector) – The point or vector to be plotted as point in space.

  • **kwargs – Keyword arguments are parsed to the plot object.

Returns:

The added plot object.

Return type:

PlotPoint

add_vector(vector: Vector, origin: Point | Vector | None = None, **kwargs)#

Add a sympy Vector to the scene.

Parameters:
  • vector (Vector) – The vector that should be plotted with respect to the zero_point.

  • origin (Point, Vector, optional) – The origin of the reference frame. Default is the zero_point.

  • **kwargs (dict, optional) – Kwargs that are parsed to the plot object.

Returns:

The added plot object.

Return type:

PlotVector

animate(get_args: Callable[[Any], tuple], frames: Iterable[Any] | int, interval: int = 30, **kwargs) FuncAnimation#

Animate the scene.

Parameters:
  • get_args (Callable) – Function that returns the arguments for the evaluate_system method. The function should takes the current frame as input.

  • frames (int or iterable) – Number of frames or iterable with frames.

  • interval (int, optional) – Time interval between frames in milliseconds. Default is 30.

  • **kwargs – Keyword arguments are parsed to the matplotlib.animation.FuncAnimation.

Returns:

Animation object.

Return type:

matplotlib.animation.FuncAnimation

property annot_coords#

Coordinate where the annotation text is displayed.

property annot_location#

String describing where the annotation should be displayed.

Explanation

String that is used to determine where the annotation should be displayed. Options are: - ‘object’: The annotation location is determined based on the plot_object

property artists: tuple[symmeplot.core.artists.ArtistBase, ...]#

Artists used to plot the object.

auto_zoom(scale=1.1)#

Auto scale the axis.

property axes#

Axes used by the scene.

property children: tuple[symmeplot.core.plot_base.PlotBase, ...]#

Plot objects.

clear()#

Clear the axes.

Explanation

Remove all artists known by the instance. Only the inertial frame as plotobject in the scene.

evaluate_system(*args) None#

Evaluate the system using the function created with lambdify_system.

classmethod from_model(model: ModelBase, ax: Axes3D | None = None, **inertial_frame_properties)#

Initialize the plotter.

Parameters:
  • model (ModelBase) – Model to plot.

  • ax (mpl_toolkits.mplot3d.axes3d.Axes3D, optional) – Axes to plot on. If None, a new figure is created.

  • **inertial_frame_properties – Keyword arguments are parsed to symmeplot.plot_objects.PlotFrame representing the inertial reference frame.

get_expressions_to_evaluate() tuple#

Return a tuple of the necessary expressions for plotting.

get_plot_object(sympy_object: Any | str) PlotBase | None#

Return the plot_object based on a sympy object.

Explanation

Return the plot_object based on a provided sympy object. For example ReferenceFrame('N') will give the PlotFrame of that reference frame. If the plot_object has not been added it will return None.

Parameters:

sympy_object (Any or str) – SymPy object to search for. If it is a string it will search for the name.

Returns:

Retrieved plot object.

Return type:

PlotBase or None

property inertial_frame: ReferenceFrame#

The reference frame with respect to which all objects will be oriented.

lambdify_system(args, modules=None, printer=None, use_imps=True, dummify=False, cse=True) Callable#

Lambdify the system.

Explanation

Lambdify the system for faster evaluation, when combined with symmeplot.core.scene.SceneBase.evaluate_system(). See sympy.utilities.lambdify.lambdify() for more information.

plot(prettify=True, ax_scale=1.5)#

Plot all plot objects.

Parameters:
  • prettify (bool, optional) – If True prettify the axes. Default is True.

  • ax_scale (float, optional) – Makes the axes bigger in the figure. This function is part of prettifying the figure and only works nicely if it is the only subplot. Disabled if set to 0. Default is 1.5

Returns:

Returns the plotted artists

Return type:

tuple of artists

property plot_objects: tuple[symmeplot.core.plot_base.PlotBase, ...]#

Plot objects.

set_visibility(sympy_object: Any | str, is_visible: bool, raise_error: bool = True) None#

Hide or show a plot_object based on a sympy_object.

Parameters:
  • sympy_object (Point or Vector or ReferenceFrame or Particle or RigidBody or str) – SymPy object to show or hide.

  • is_visible (bool) – If True show plot_object, otherwise hide plot_object.

  • raise_error (bool, optional) – If plot_object not found raise an error. Default is True.

update() None#

Update the objects on the scene, based on the currect values.

property values: tuple#

List of evaluated values for the object’s variables.

property zero_point: Point#

The absolute origin with respect to which all objects will be positioned.