Reference 〉 Class


An abstract class with some basic functionality for Matplotlib visualizations, such as keypress handling and axes instantiation. This class is subclassed by built-in visualizations TimeSeries and Charts, and can also be subclassed by user visualizations. It is itself a subclass of BaseVisualization. It should not be instantiated directly and cannot be used directly as a visualization class.

Initialization Parameters

  • model Helipad, required

    The model object.


Click a method name for more detailed documentation.

  • addKeypress( key, fn )

    Registers a function to be run when a key is pressed in a Matplotlib visualizer. fn will run if key is pressed at any time when the plot window is in focus. To narrow the focus to a particular plot, define catchKeypress() in a subclass of ChartPlot.

  • event( t, color, **kwargs )

    Called when an event is triggered, in order to be reflected in the visualization. For example, a line is drawn in TimeSeries, and the background flashes in Charts. Any kwargs passed to Events.add() are passed to this function, allowing subclasses to receive custom arguments (for example, linestyle in TimeSeries.event()). This method is mandatory for subclasses to implement.

    This function is called automatically when an event is triggered and should not be called by user code.

  • launch( title )

    Launches the visualization window (if in Tkinter) or cell (if in Jupyter). This method is required to be implemented by subclasses, which should call super().launch(title) after creating the Matplotlib figure object.

  • refresh( data )

    Updates the visualization with new data and refreshes the display. This is mandatory for any subclasses to implement. Subclasses implementing this method should also use it to store any data necessary for future visualizer operations.

    This function should only rarely be called by the user; call model.step() instead to increment the model by one period and update the graph.

  • terminate( )

    Cleanup on model termination. This function is called automatically from model.terminate() and should not be called from user code.

Object Properties

  • isNull bool

    True when the model should run as-if with no visualization, for example if all the plots are unselected. False indicates the window can be launched.

  • lastUpdate int

    Because the model can be set to refresh the visualization only every so many periods, this property records the model time when data was last drawn to the visualization. This property is None until the visualization window is launched.

    Initial value: None

  • fig matplotlib.Figure

    The Matplotlib Figure object used for rendering the visualization as a whole.

  • plots dict{str:Plot}

    A dict of registered TimeSeriesPlot objects.

  • activePlots dict{str:Plot}

    The subset of plots containing the Plot objects that are currently selected.

  • keyListeners dict{str: list[func]}

    Where functions defined in MPLVisualization.addKeypress() are stored.

    Initial value: {}

  • dim tuple(int, int)

    The height and width at which the visualization window should open at launch, if using the Tkinter frontend. Default is the screen height and 2/3 the screen width.

    Initial value: None

  • pos tuple(int, int)

    The (x, y) position at which the visualization window should open at launch, if using the Tkinter frontend. The default x position places the window immediately to the right of the control panel.

    Initial value: (400, 0)


Click a hook name for more detailed documentation.

  • visualRefresh( model, visual )

    Runs when the visualizer updates, every n periods as determined by the refresh parameter.

  • visualLaunch( model, visual )

    Runs when model.launchVisual() is called, after the visualization is launched. Use the modelPostSetup hook to catch before the visualization is launched.

Notes and Examples

  1. charwick

    Jun 27, 2022 at 22:16

    Visualization can be the slowest part of running a model. Matplotlib can generate smaller figures much more quickly, so you may wish to launch with a smaller window. This code (which works for any subclass of MPLVisualization) initializes the visualization window at 1000×800.

    from helipad.visualize import TimeSeries
    viz = heli.useVisual(TimeSeries)
    viz.dim = (1000, 800)
    viz.pos = (400, 100)
  2. Contribute a Note

    Your email address will not be published. Required fields are marked *

    You may use limited HTML for formatting. Please embed blocks of code in <pre><code> </code></pre> tags.