class eelbrain.plot.Butterfly(y, xax=None, sensors=None, axtitle=True, xlabel=True, ylabel=True, xticklabels='bottom', color=None, linewidth=None, ds=None, sub=None, x='time', vmax=None, vmin=None, xlim=None, clip=None, *args, **kwargs)

Butterfly plot for NDVars

y : (list of) NDVar

Data to plot.

xax : None | categorial

Create a separate plot for each cell in this model.

sensors: None or list of sensor IDs

sensors to plot (None = all)

axtitle : bool | sequence of str

Title for the individual axes. The default is to show the names of the epochs, but only if multiple axes are plotted.

xlabel : str | bool

X-axis labels. By default the label is inferred from the data.

ylabel : str | bool

Y-axis labels. By default the label is inferred from the data.

xticklabels : bool | int | list of int

Specify which axes should be annotated with x-axis tick labels. Use int for a single axis (default -1), a sequence of int for multiple specific axes, or bool for all/none.

color : matplotlib color | dict

Either a color for all lines, or a dictionary mapping levels of the line dimension to colors. The default is to use['color'] if available, otherwise the matplotlib default color alternation. Use color=True to use the matplotlib default.

linewidth : scalar

Linewidth for plots (defult is to use matplotlib.rcParams).

ds : None | Dataset

If a Dataset is provided, epochs and xax can be specified as strings.

sub : str | array

Specify a subset of the data.

x : str

Dimension to plot on the x-axis (default ‘time’).

vmax : scalar

Top of the y axis (default depends on data).

vmin : scalar

Bottom of the y axis (default depends on data).

xlim : scalar | (scalar, scalar)

Initial x-axis view limits as (left, right) tuple or as length scalar (default is the full x-axis in the data).

clip : bool

Clip lines outside of axes (the default depends on whether frame is closed or open).

tight : bool

Use matplotlib’s tight_layout to expand all axes to fill the figure (default True)

Also accepts General layout parameters.


  • : scroll up
  • : scroll down
  • : scroll left
  • : scroll right
  • home: scroll to beginning
  • end: scroll to end
  • f: x-axis zoom in (reduce x axis range)
  • d: x-axis zoom out (increase x axis range)
  • r: y-axis zoom in (reduce y-axis range)
  • c: y-axis zoom out (increase y-axis range)
Keys available for sensor data:
  • t: open a Topomap plot for the time point under the mouse pointer.
  • T: open a larger Topomap plot with visible sensor names for the time point under the mouse pointer.


add_hline(self, y[, axes]) Draw a horizontal line on one or more axes
add_hspan(self, bottom, top[, axes]) Draw a horizontal bar on one or more axes
add_vline(self, x[, axes]) Draw a vertical line on one or more axes
add_vspan(self, xmin, xmax[, axes]) Draw a vertical bar on one or more axes
add_vspans(self, intervals[, axes]) Draw vertical bars over axes
close(self) Close the figure.
draw(self) (Re-)draw the figure (after making manual changes).
draw_crosshairs(self[, enable]) Draw crosshairs under the cursor
get_time(self) Retrieve the current time
image(self[, name, format]) Create FMTXT Image from the figure
link_time_axis(self, other) Link the time axis of this figure with another figure
play_movie(self[, time_dilation]) Cycle through the time axis
plot_legend(self[, loc, labels]) Plot the legend (or remove it from the figure).
save(self, *args, **kwargs) Short-cut for Matplotlib’s savefig()
save_legend(self, *args, **kwargs) Save the legend as image file
save_movie(self[, filename, time_dilation]) Save the figure with moving time axis as movie
set_name(self, name) Set the figure window title
set_time(self, time) Set the time point to display
set_xlabel(self, label[, ax]) Set the label for the x-axis
set_xlim(self[, left, right]) Set the x-axis limits for all axes
set_xtick_rotation(self, rotation) Rotate every x-axis tick-label by an angle (counterclockwise, in degrees)
set_ylabel(self, label[, ax]) Set the label for the y-axis
set_ylim(self[, bottom, top]) Set the y-axis limits