pybop.plot.backends.matplotlib#

Classes#

MatplotlibBackend

Matplotlib implementation of the PlotBackend interface.

Module Contents#

class pybop.plot.backends.matplotlib.MatplotlibBackend[source]#

Bases: pybop.plot.backends.base.PlotBackend

Matplotlib implementation of the PlotBackend interface. This backend converts backend-agnostic trace definitions into Matplotlib figures, axes, and artists. Plot objects are represented as dictionaries containing plotting arguments and metadata, allowing higher-level plotting code to remain independent of the underlying plotting library.

_figsize(style)[source]#

Convert pixel-based width and height values from a style dictionary into a Matplotlib figsize (inches).

colorbar(fig, data, colorscale='viridis', label=None, ax=None)[source]#

Add colourbar to figure

Parameters:
  • fig (matplotlib.figure.Figure) – The figure.

  • data (array-like) – The data to be mapped

  • scale (str) – Name of the colormap

  • label (str, optional) – label to be displayed alongside colorbar

  • ax (matplotlib axis object, optional) – Specity an axis for plotting. Otherwise current axis is used.

contour_plot(x, y, z, fig, ax=None, colorscale='viridis')[source]#

Return trace definitions for a filled contour plot and contour lines.

Parameters:
  • x (array-like) – Coordinate values.

  • y (array-like) – Coordinate values.

  • z (array-like) – Surface values.

  • colorscale (str, optional) – Colour scale name.

  • fig (matplotlib.figure.Figure) – The figure.

  • ax (matplotlib axis object, optional) – Specity an axis for plotting. Otherwise current axis is used.

Returns:

dictionary for contour plot definition and dictionary for contour line definition

Return type:

object

create_figure(title=None, xaxis_title=None, yaxis_title=None, traces=None, style=None)[source]#

Create a single-axis figure and optionally populate it with traces.

Parameters:
  • title (str, optional) – Figure title.

  • xaxis_title (str, optional) – X-axis label.

  • yaxis_title (str, optional) – Y-axis label.

  • traces (list[dict], optional) – Trace definitions to plot immediately.

  • style (dict, optional) –

    Figure styling options. Currently supported options:

    • width in pixels

    • heith in pixels

    • xaxis_range: range of the X-axis

    • yaxis_range: range of the Y-axis

    • bg_color: background color of the axis

Returns:

Configured figure instance.

Return type:

matplotlib.figure.Figure

fill_between(x, y_upper, y_lower, color)[source]#

Return a trace definition for a filled region between two curves.

Parameters:
  • x (array-like) – X-axis values.

  • y_upper (array-like) – Upper boundary values.

  • y_lower (array-like) – Lower boundary values.

  • color (str) – Fill colour.

heatmap(x, y, z, colorscale='viridis')[source]#

Return a trace definition for a heatmap.

Parameters:
  • x (array-like) – Coordinate values.

  • y (array-like) – Coordinate values.

  • z (array-like) – Surface values.

  • colorscale (str, optional) – Colour scale name.

histogram_plot(x, name, style: dict = None)[source]#

Return a trace definition for a histogram.

Parameters:
  • x (array-like) – Data to bin.

  • name (str) – Histogram label.

  • style (dict, optional) – Currently only ‘alpha’ supported for opacity. All other style arguments ignored.

legend(fig, axes=None, style: dict = None)[source]#

Create an axis-level or figure-level legend.

Supports legends positioned outside the plotting area and updates the layout rectangle used by tight_layout() accordingly.

Parameters:
  • fig (matplotlib.figure.Figure) – The figure object

  • style (dict, optional) –

    Legend styling options. Currently supported options:

    • loc: str

    • coords: tuple - is translated into bbox_to_anchor

    • outside: tuple(sidestr, offset: float) places

      the legend outside the plot, where the side (left, right, top, bottom) determines on wich side of the plot the legend is placed and the offset determines the fraction of the figure height or width reserved for the legend. Overrides loc and coords.

    • fig_legend: if true, one legend is created for the entire figure, otherwise the legend is created

      for the current axis.

line(x=None, y=None, label=None, style=None)[source]#

Return a trace definition for a line plot.

Parameters:
  • x (array-like, optional) – Coordinates of the line. If both x and y are provided, the shorter sequence determines the plotted length.

  • y (array-like, optional) – Coordinates of the line. If both x and y are provided, the shorter sequence determines the plotted length.

  • label (str, optional) – Trace label.

  • style (dict, optional) – Line styling options.

Returns:

dictionary with positional argumetns, label and style arguments

Return type:

object

make_subplots(num_rows: int, num_cols: int, num_plots: int, title=None, style=None)[source]#

Create a figure containing multiple subplot axes in a grid.

Parameters:
  • num_rows (int) – Number of rows in the subplot grid.

  • num_cols (int) – Number of columns in the subplot grid.

  • num_plots (int) – Total number of subplots to create.

  • title (str, optional) – Figure title.

  • style (dict, optional) –

    Figure styling options. Currently supported options:

    • width in pixels

    • heith in pixels

    • bg_color: background color of the axis

Returns:

Configured figure instance.

Return type:

matplotlib.figure.Figure

plot_trace(traces: dict | list[dict], fig, ax=None)[source]#

Convert one or more trace definitions into Matplotlib plotting calls.

Parameters:
  • traces (dict or list[dict]) – Each trace dictionary specifies a plotting method, positional arguments, and keyword arguments compatible with a Matplotlib Axes method.

  • fig (matplotlib.figure.Figure) – The figure object

  • ax (matplotlib axis object, optional) – Specity an axis for plotting. Otherwise current axis is used.

sample_color_scale(data, scale='viridis', d_min=None, d_max=None)[source]#

Map data values to RGBA colours using a Matplotlib colormap.

Parameters:
  • data (ndarray) – The data to be mapped

  • scale (str) – Name of the colormap

  • d_min (float, optional) – Minimum value to be mapped. Otherwise the minimum of the data is used.

  • d_max (float, optional) – Maximum value to be mapped. Ohterwise maximum of the data is used.

scatter(x, y, colors=None, labels=None, colorscale='Greys')[source]#

Return a trace definition for a scatter plot.

Parameters:
  • x (array-like) – Point coordinates.

  • y (array-like) – Point coordinates.

  • colors (array-like) – Values or colours associated with each point.

  • labels (array-like, optional) – Point labels. Point labels are ignored by matplotlib implementation. Argument retained for consistency with plotly.

  • colorscale (str, optional) – Colour scale name.

show_figure(fig)[source]#

Apply final layout adjustments and display the figure.

Parameters:

fig (matplotlib.figure.Figure) – The figure object

show_table(header, values, title, fig=None, ax=None)[source]#

Display tabular data in a standalone Matplotlib figure.

Array-valued entries are converted to comma-separated strings before rendering.

Parameters:
  • header (list) – Column headers.

  • values (list) – Table contents.

  • title (str) – Table title.

  • fig (matplotlib.figure.Figure, optional) – Figure for plotting. If not provided a new figure is created.

  • ax (matplotlib axis object, optional) – Axis for plotting. If not provided the current axis is used.

update_axes_ranges(fig, ax=None, xaxis_range=None, yaxis_range=None)[source]#

Update the ranges of the axes in the provided figure.

Parameters:
  • fig (Figure) – Matplotlib figure containing the axes to update.

  • ax (tuple) – Subplot location.

  • xaxis_range (tuple) – Range for the x-axis.

  • yaxis_range (tuple) – Range for the y-axis.

update_axes_titles(figures, axes, xaxis_titles, yaxis_titles, max_width=40)[source]#

Update the titles of the axes in the provided figures.

Parameters:
  • figures (list[Figure]) – List of matplotlib figures containing the axes to update.

  • axes (list[tuple]) – List of subplot locations specified as matplotlib axes objects.

  • xaxis_titles (list[str]) – List of titles for the X-axes.

  • yaxis_titles (list[str]) – List of titles for the Y-axes.

  • max_width (int, optional) – Maximum width for the axis titles before wrapping. Default is 40 characters.

update_plot_titles(figures, axes, titles, max_text_width=40, pad=0)[source]#

Update the titles of the subplots in the provided figures.

Parameters:
  • figures (list[Figure]) – List of matplotlib figures containing the subplots to update.

  • axes (list[tuple]) – List of subplot locations specified as matplotlib axes objects.

  • titles (list[str]) – List of titles for the subplots.

  • max_text_width (int, optional) – Maximum width for the subplot titles before wrapping. Default is 40 characters.

  • pad (int, optional) – Padding between the title and the subplot. Default is 0.

vline(fig, x, style=None, ax=None)[source]#

Add a vertical reference line to the current axis.

Parameters:
  • fig (matplotlib.figure.Figure) – The figure.

  • x (float) – The position of the vertical line on the axis

  • style (dict, optional) – matplotlib arguments for axvline method

  • ax (matplotlib axis object, optional) – Specity an axis for plotting. Otherwise current axis is used.

colorcycle#
global_colorcycle = False#
mpl#
plt#
rect = [0, 0, 1, 1]#