PlotWidget: Base class for plotting widgets#

The PlotWidget is a Qt widget providing the plot API initially provided in PyMca. It is the basis of other plot widget, thus all plot widgets share the same API.

For an introduction and examples of the plot API, see Getting started with plot widgets.

PlotWidget#

class PlotWidget(parent=None, backend=None)[source]#

Bases: QMainWindow

Qt Widget providing a 1D/2D plot.

This widget is a QMainWindow. This class implements the plot API initially provided in PyMca.

Supported backends:

  • ‘matplotlib’ and ‘mpl’: Matplotlib with Qt.

  • ‘opengl’ and ‘gl’: OpenGL backend (requires PyOpenGL and OpenGL >= 2.1)

  • ‘none’: No backend, to run headless for testing purpose.

Parameters:
  • parent – The parent of this widget or None (default).

  • backend (str or BackendBase.BackendBase) – The backend to use, in: ‘matplotlib’ (default), ‘mpl’, ‘opengl’, ‘gl’, ‘none’ or a BackendBase.BackendBase class

Plot data#

Those methods allow to add and update plotted data:

PlotWidget.addCurve(x, y, legend=None, info=None, replace=False, color=None, symbol=None, linewidth=None, linestyle=None, xlabel=None, ylabel=None, yaxis=None, xerror=None, yerror=None, z=None, selectable=None, fill=None, resetzoom=True, histogram=None, copy=True, baseline=None)[source]#

Add a 1D curve given by x an y to the graph.

Curves are uniquely identified by their legend. To add multiple curves, call addCurve() multiple times with different legend argument. To replace an existing curve, call addCurve() with the existing curve legend. If you want to display the curve values as an histogram see the histogram parameter or addHistogram().

When curve parameters are not provided, if a curve with the same legend is displayed in the plot, its parameters are used.

Parameters:
  • x (numpy.ndarray) – The data corresponding to the x coordinates. If you attempt to plot an histogram you can set edges values in x. In this case len(x) = len(y) + 1. If x contains datetime objects the XAxis tickMode is set to TickMode.TIME_SERIES.

  • y (numpy.ndarray) – The data corresponding to the y coordinates

  • legend (str) – The legend to be associated to the curve (or None)

  • info – User-defined information associated to the curve

  • replace (bool) – True to delete already existing curves (the default is False)

  • color (str ("#RRGGBB") or (npoints, 4) unsigned byte array or one of the predefined color names defined in colors.py) – color(s) to be used

  • symbol (str) –

    Symbol to be drawn at each (x, y) position:

    - 'o' circle
    - '.' point
    - ',' pixel
    - '+' cross
    - 'x' x-cross
    - 'd' diamond
    - 's' square
    - None (the default) to use default symbol
    

  • linewidth (float) – The width of the curve in pixels (Default: 1).

  • linestyle (str) –

    Type of line:

    - ' '  no line
    - '-'  solid line
    - '--' dashed line
    - '-.' dash-dot line
    - ':'  dotted line
    - None (the default) to use default line style
    

  • xlabel (str) – Label to show on the X axis when the curve is active or None to keep default axis label.

  • ylabel (str) – Label to show on the Y axis when the curve is active or None to keep default axis label.

  • yaxis (str) – The Y axis this curve is attached to. Either ‘left’ (the default) or ‘right’

  • xerror (A float, or a numpy.ndarray of float32. If it is an array, it can either be a 1D array of same length as the data or a 2D array with 2 rows of same length as the data: row 0 for lower errors, row 1 for upper errors.) – Values with the uncertainties on the x values

  • yerror (A float, or a numpy.ndarray of float32. See xerror.) – Values with the uncertainties on the y values

  • z (int) – Layer on which to draw the curve (default: 1) This allows to control the overlay.

  • selectable (bool) – Indicate if the curve can be selected. (Default: True)

  • fill (bool) – True to fill the curve, False otherwise (default).

  • resetzoom (bool) – True (the default) to reset the zoom.

  • histogram (str) –

    if not None then the curve will be draw as an histogram. The step for each values of the curve can be set to the left, center or right of the original x curve values. If histogram is not None and len(x) == len(y)+1 then x is directly take as edges of the histogram. Type of histogram:

    - None (default)
    - 'left'
    - 'right'
    - 'center'
    

  • copy (bool) – True make a copy of the data (default), False to use provided arrays.

  • baseline – curve baseline

Type:

Union[None,float,numpy.ndarray]

Returns:

The curve item

PlotWidget.addImage(data, legend=None, info=None, replace=False, z=None, selectable=None, draggable=None, colormap=None, pixmap=None, xlabel=None, ylabel=None, origin=None, scale=None, resetzoom=True, copy=True)[source]#

Add a 2D dataset or an image to the plot.

It displays either an array of data using a colormap or a RGB(A) image.

Images are uniquely identified by their legend. To add multiple images, call addImage() multiple times with different legend argument. To replace/update an existing image, call addImage() with the existing image legend.

When image parameters are not provided, if an image with the same legend is displayed in the plot, its parameters are used.

Parameters:
  • data (numpy.ndarray) – (nrows, ncolumns) data or (nrows, ncolumns, RGBA) ubyte array Note: boolean values are converted to int8.

  • legend (str) – The legend to be associated to the image (or None)

  • info – User-defined information associated to the image

  • replace (bool) – True to delete already existing images (Default: False).

  • z (int) – Layer on which to draw the image (default: 0) This allows to control the overlay.

  • selectable (bool) – Indicate if the image can be selected. (default: False)

  • draggable (bool) – Indicate if the image can be moved. (default: False)

  • colormap (Union[Colormap, dict]) – Colormap object to use (or None). This is ignored if data is a RGB(A) image.

  • pixmap ((nrows, ncolumns, RGBA) ubyte array or None (default)) – Pixmap representation of the data (if any)

  • xlabel (str) – X axis label to show when this curve is active, or None to keep default axis label.

  • ylabel (str) – Y axis label to show when this curve is active, or None to keep default axis label.

  • origin (float or 2-tuple of float) – (origin X, origin Y) of the data. It is possible to pass a single float if both coordinates are equal. Default: (0., 0.)

  • scale (float or 2-tuple of float) – (scale X, scale Y) of the data. It is possible to pass a single float if both coordinates are equal. Default: (1., 1.)

  • resetzoom (bool) – True (the default) to reset the zoom.

  • copy (bool) – True make a copy of the data (default), False to use provided arrays.

Returns:

The image item

PlotWidget.addScatter(x, y, value, legend=None, colormap=None, info=None, symbol=None, xerror=None, yerror=None, z=None, copy=True)[source]#

Add a (x, y, value) scatter to the graph.

Scatters are uniquely identified by their legend. To add multiple scatters, call addScatter() multiple times with different legend argument. To replace/update an existing scatter, call addScatter() with the existing scatter legend.

When scatter parameters are not provided, if a scatter with the same legend is displayed in the plot, its parameters are used.

Parameters:
  • x (numpy.ndarray) – The data corresponding to the x coordinates.

  • y (numpy.ndarray) – The data corresponding to the y coordinates

  • value (numpy.ndarray) – The data value associated with each point

  • legend (str) – The legend to be associated to the scatter (or None)

  • colormap (Colormap) – Colormap object to be used for the scatter (or None)

  • info – User-defined information associated to the curve

  • symbol (str) –

    Symbol to be drawn at each (x, y) position:

    - 'o' circle
    - '.' point
    - ',' pixel
    - '+' cross
    - 'x' x-cross
    - 'd' diamond
    - 's' square
    - None (the default) to use default symbol
    

  • xerror (A float, or a numpy.ndarray of float32. If it is an array, it can either be a 1D array of same length as the data or a 2D array with 2 rows of same length as the data: row 0 for lower errors, row 1 for upper errors.) – Values with the uncertainties on the x values

  • yerror (A float, or a numpy.ndarray of float32. See xerror.) – Values with the uncertainties on the y values

  • z (int) – Layer on which to draw the scatter (default: 1) This allows to control the overlay.

  • copy (bool) – True make a copy of the data (default), False to use provided arrays.

Returns:

The scatter item

PlotWidget.addHistogram(histogram, edges, legend=None, color=None, fill=None, align='center', resetzoom=True, copy=True, z=None, baseline=None)[source]#

Add an histogram to the graph.

This is NOT computing the histogram, this method takes as parameter already computed histogram values.

Histogram are uniquely identified by their legend. To add multiple histograms, call addHistogram() multiple times with different legend argument.

When histogram parameters are not provided, if an histogram with the same legend is displayed in the plot, its parameters are used.

Parameters:
  • histogram (numpy.ndarray) – The values of the histogram.

  • edges (numpy.ndarray) – The bin edges of the histogram. If histogram and edges have the same length, the bin edges are computed according to the align parameter.

  • legend (str) – The legend to be associated to the histogram (or None)

  • color (str ("#RRGGBB") or RGB unsigned byte array or one of the predefined color names defined in colors.py) – color to be used

  • fill (bool) – True to fill the curve, False otherwise (default).

  • align (str) – In case histogram values and edges have the same length N, the N+1 bin edges are computed according to the alignment in: ‘center’ (default), ‘left’, ‘right’.

  • resetzoom (bool) – True (the default) to reset the zoom.

  • copy (bool) – True make a copy of the data (default), False to use provided arrays.

  • z (int) – Layer on which to draw the histogram

  • baseline – histogram baseline

Type:

Union[None,float,numpy.ndarray]

Returns:

The histogram item

Get data#

Those methods return objects providing access to plotted data:

PlotWidget.getItems()[source]#

Returns the list of items in the plot

Return type:

List[silx.gui.plot.items.Item]

PlotWidget.getCurve(legend=None)[source]#

Get the object describing a specific curve.

It returns None in case no matching curve is found.

Parameters:

legend (str | Curve | None) – The legend identifying the curve. If not provided or None (the default), the active curve is returned or if there is no active curve, the latest updated curve that is not hidden is returned if there are curves in the plot.

Return type:

Curve

Returns:

None or items.Curve object

PlotWidget.getImage(legend=None)[source]#

Get the object describing a specific image.

It returns None in case no matching image is found.

Parameters:

legend (str | ImageBase | None) – The legend identifying the image. If not provided or None (the default), the active image is returned or if there is no active image, the latest updated image is returned if there are images in the plot.

Return type:

ImageBase

Returns:

None or items.ImageBase object

PlotWidget.getScatter(legend=None)[source]#

Get the object describing a specific scatter.

It returns None in case no matching scatter is found.

Parameters:

legend (str | Scatter | None) – The legend identifying the scatter. If not provided or None (the default), the active scatter is returned or if there is no active scatter, the latest updated scatter is returned if there are scatters in the plot.

Return type:

Scatter

Returns:

None or items.Scatter object

PlotWidget.getHistogram(legend=None)[source]#

Get the object describing a specific histogram.

It returns None in case no matching histogram is found.

Parameters:

legend (str | Histogram | None) – The legend identifying the histogram. If not provided or None (the default), the latest updated scatter is returned if there are histograms in the plot.

Return type:

Histogram

Returns:

None or items.Histogram object

Plot markers#

It is also possible to add point or line markers to the plot:

PlotWidget.addMarker(x, y, legend=None, text=None, color=None, selectable=False, draggable=False, symbol='+', constraint=None, yaxis='left')[source]#

Add a point marker to the plot.

Markers are uniquely identified by their legend. As opposed to curves, images and items, two calls to addMarker() without legend argument adds two markers with different identifying legends.

Parameters:
  • x (float) – Position of the marker on the X axis in data coordinates

  • y (float) – Position of the marker on the Y axis in data coordinates

  • legend (str) – Legend associated to the marker to identify it

  • text (str) – Text to display next to the marker

  • color (str) – Color of the marker, e.g., ‘blue’, ‘b’, ‘#FF0000’ (Default: ‘black’)

  • selectable (bool) – Indicate if the marker can be selected. (default: False)

  • draggable (bool) – Indicate if the marker can be moved. (default: False)

  • symbol (str) –

    Symbol representing the marker in:

    - 'o' circle
    - '.' point
    - ',' pixel
    - '+' cross (the default)
    - 'x' x-cross
    - 'd' diamond
    - 's' square
    

  • constraint (None or a callable that takes the coordinates of the current cursor position in the plot as input and that returns the filtered coordinates.) – A function filtering marker displacement by dragging operations or None for no filter. This function is called each time a marker is moved. This parameter is only used if draggable is True.

  • yaxis (str) – The Y axis this marker belongs to in: ‘left’, ‘right’

Returns:

The marker item

PlotWidget.addXMarker(x, legend=None, text=None, color=None, selectable=False, draggable=False, constraint=None, yaxis='left')[source]#

Add a vertical line marker to the plot.

Markers are uniquely identified by their legend. As opposed to curves, images and items, two calls to addXMarker() without legend argument adds two markers with different identifying legends.

Parameters:
  • x (Union[None, float]) – Position of the marker on the X axis in data coordinates

  • legend (str) – Legend associated to the marker to identify it

  • text (str) – Text to display on the marker.

  • color (str) – Color of the marker, e.g., ‘blue’, ‘b’, ‘#FF0000’ (Default: ‘black’)

  • selectable (bool) – Indicate if the marker can be selected. (default: False)

  • draggable (bool) – Indicate if the marker can be moved. (default: False)

  • constraint (None or a callable that takes the coordinates of the current cursor position in the plot as input and that returns the filtered coordinates.) – A function filtering marker displacement by dragging operations or None for no filter. This function is called each time a marker is moved. This parameter is only used if draggable is True.

  • yaxis (str) – The Y axis this marker belongs to in: ‘left’, ‘right’

Returns:

The marker item

PlotWidget.addYMarker(y, legend=None, text=None, color=None, selectable=False, draggable=False, constraint=None, yaxis='left')[source]#

Add a horizontal line marker to the plot.

Markers are uniquely identified by their legend. As opposed to curves, images and items, two calls to addYMarker() without legend argument adds two markers with different identifying legends.

Parameters:
  • y (float) – Position of the marker on the Y axis in data coordinates

  • legend (str) – Legend associated to the marker to identify it

  • text (str) – Text to display next to the marker.

  • color (str) – Color of the marker, e.g., ‘blue’, ‘b’, ‘#FF0000’ (Default: ‘black’)

  • selectable (bool) – Indicate if the marker can be selected. (default: False)

  • draggable (bool) – Indicate if the marker can be moved. (default: False)

  • constraint (None or a callable that takes the coordinates of the current cursor position in the plot as input and that returns the filtered coordinates.) – A function filtering marker displacement by dragging operations or None for no filter. This function is called each time a marker is moved. This parameter is only used if draggable is True.

  • yaxis (str) – The Y axis this marker belongs to in: ‘left’, ‘right’

Returns:

The marker item

Remove data from the plot#

PlotWidget.clear()[source]#

Remove everything from the plot.

PlotWidget.remove(legend=None, kind=('curve', 'image', 'scatter', 'item', 'marker', 'histogram'))[source]#

Remove one or all element(s) of the given legend and kind.

Examples:

  • remove() clears the plot

  • remove(kind='curve') removes all curves from the plot

  • remove('myCurve', kind='curve') removes the curve with legend ‘myCurve’ from the plot.

  • remove('myImage, kind='image') removes the image with legend ‘myImage’ from the plot.

  • remove('myImage') removes elements (for instance curve, image, item and marker) with legend ‘myImage’.

Parameters:
  • legend (str | Item | None) – The legend of the item to remove or the item itself. If None all items of given kind are removed.

  • kind (str | Sequence[str]) – The kind of items to remove from the plot. See ITEM_KINDS. By default, it removes all kind of elements.

Title#

Those methods handle the plot title:

PlotWidget.getGraphTitle()[source]#

Return the plot main title as a str.

PlotWidget.setGraphTitle(title='')[source]#

Set the plot main title.

Parameters:

title (str) – Main title of the plot (default: ‘’)

Axes#

Those two methods give access to items.Axis which handle the limits, scales and labels of axis:

PlotWidget.getXAxis()[source]#

Returns the X axis

Added in version 0.6.

Return type:

items.Axis

PlotWidget.getYAxis(axis='left')[source]#

Returns an Y axis

Added in version 0.6.

Parameters:

axis (str) – The Y axis to return (‘left’ or ‘right’).

Return type:

items.Axis

The following methods handle plot limits, aspect ratio, grid and axes display:

PlotWidget.setLimits(xmin, xmax, ymin, ymax, y2min=None, y2max=None, margins=False)[source]#

Set the limits of the X and Y axes at once.

If y2min or y2max is None, the right Y axis limits are not updated.

Parameters:
  • xmin (float) – minimum bottom axis value

  • xmax (float) – maximum bottom axis value

  • ymin (float) – minimum left axis value

  • ymax (float) – maximum left axis value

  • y2min (Optional[float]) – minimum right axis value or None (the default)

  • y2max (Optional[float]) – maximum right axis value or None (the default)

  • margins (Union[bool, tuple[float, float, float, float]]) – Data margins to add to the limits or a boolean telling whether or not to add margins from getDataMargins().

PlotWidget.isKeepDataAspectRatio()[source]#

Returns whether the plot is keeping data aspect ratio or not.

PlotWidget.setKeepDataAspectRatio(flag=True)[source]#

Set whether the plot keeps data aspect ratio or not.

Parameters:

flag (bool) – True to respect data aspect ratio

PlotWidget.getGraphGrid()[source]#

Return the current grid mode, either None, ‘major’ or ‘both’.

See setGraphGrid().

PlotWidget.setGraphGrid(which=True)[source]#

Set the type of grid to display.

Parameters:

which (str of bool) – None or False to disable the grid, ‘major’ or True for grid on major ticks (the default), ‘both’ for grid on both major and minor ticks.

PlotWidget.isAxesDisplayed()[source]#

Returns whether or not axes are currently displayed

Return type:

bool

PlotWidget.setAxesDisplayed(displayed)[source]#

Display or not the axes.

Parameters:
  • displayed (bool) – If True axes are displayed. If False axes are not anymore visible and the margin used for them is removed.

  • displayed

PlotWidget.getAxesMargins()[source]#

Returns ratio of margins surrounding data plot area.

Returns:

(left, top, right, bottom)

Return type:

List[float]

PlotWidget.setAxesMargins(left, top, right, bottom)[source]#

Set ratios of margins surrounding data plot area.

All ratios must be within [0., 1.]. Sums of ratios of opposed side must be < 1.

Parameters:
  • left (float) – Left-side margin ratio.

  • top (float) – Top margin ratio

  • right (float) – Right-side margin ratio

  • bottom (float) – Bottom margin ratio

  • left

  • top

  • right

  • bottom

Raises:

ValueError

Reset zoom#

PlotWidget.resetZoom(dataMargins=None)[source]#

Reset the plot limits to the bounds of the data and redraw the plot.

It automatically scale limits of axes that are in autoscale mode (see getXAxis(), getYAxis() and Axis.setAutoScale()). It keeps current limits on axes that are not in autoscale mode.

Extra margins can be added around the data inside the plot area (see setDataMargins()). Margins are given as one ratio of the data range per limit of the data (xMin, xMax, yMin and yMax limits). For log scale, extra margins are applied in log10 of the data.

Parameters:

dataMargins (A 4-tuple of float as (xMin, xMax, yMin, yMax).) – Ratios of margins to add around the data inside the plot area for each side (default: no margins).

The following methods allow to add margins around the data when performing a zoom reset:

PlotWidget.getDataMargins()[source]#

Get the default data margin ratios, see setDataMargins().

Return type:

tuple[float, float, float, float]

Returns:

The margin ratios for each side (xMin, xMax, yMin, yMax).

PlotWidget.setDataMargins(xMinMargin=0.0, xMaxMargin=0.0, yMinMargin=0.0, yMaxMargin=0.0)[source]#

Set the default data margins to use in resetZoom().

Set the default ratios of margins to add around the data inside the plot area for each side.

Parameters:
  • xMinMargin (float)

  • xMaxMargin (float)

  • yMinMargin (float)

  • yMaxMargin (float)

Defaults#

Those methods set-up default values for PlotWidget.addCurve() and PlotWidget.addImage():

PlotWidget.getDefaultColormap()[source]#

Return the default colormap used by addImage().

Return type:

Colormap

PlotWidget.setDefaultColormap(colormap=None)[source]#

Set the default colormap used by addImage().

Setting the default colormap do not change any currently displayed image. It only affects future calls to addImage() without the colormap parameter.

Parameters:

colormap (Colormap) – The description of the default colormap, or None to set the colormap to a linear autoscale gray colormap.

static PlotWidget.getSupportedColormaps()[source]#

Get the supported colormap names as a tuple of str.

The list contains at least: (‘gray’, ‘reversed gray’, ‘temperature’, ‘red’, ‘green’, ‘blue’, ‘magma’, ‘inferno’, ‘plasma’, ‘viridis’)

PlotWidget.setDefaultPlotPoints(flag)[source]#

Set the default symbol of all curves.

When called, this reset the symbol of all existing curves.

Parameters:

flag (bool) – True to use ‘o’ as the default curve symbol, False to use no symbol.

PlotWidget.setDefaultPlotLines(flag)[source]#

Toggle the use of lines as the default curve line style.

Parameters:

flag (bool) – True to use a line as the default line style, False to use no line as the default line style.

Interaction#

Those methods allow to change the interaction mode (e.g., drawing mode) of the plot and to toggle the use of a crosshair cursor:

PlotWidget.interaction()[source]#

Returns the interaction handler for this PlotWidget

Return type:

<module ‘silx.gui.plot.PlotInteraction’ from ‘/opt/hostedtoolcache/Python/3.12.3/x64/lib/python3.12/site-packages/silx/gui/plot/PlotInteraction.py’>

PlotWidget.getInteractiveMode()[source]#

Returns the current interactive mode as a dict.

The returned dict contains at least the key ‘mode’. Mode can be: ‘draw’, ‘pan’, ‘select’, ‘select-draw’, ‘zoom’. It can also contains extra keys (e.g., ‘color’) specific to a mode as provided to setInteractiveMode().

PlotWidget.setInteractiveMode(mode, color='black', shape='polygon', label=None, zoomOnWheel=True, source=None, width=None)[source]#

Switch the interactive mode.

Parameters:
  • mode (str) – The name of the interactive mode. In ‘draw’, ‘pan’, ‘select’, ‘select-draw’, ‘zoom’.

  • color (Color description: The name as a str or a tuple of 4 floats.) – Only for ‘draw’ and ‘zoom’ modes. Color to use for drawing selection area. Default black.

  • shape (str) – Only for ‘draw’ mode. The kind of shape to draw. In ‘polygon’, ‘rectangle’, ‘line’, ‘vline’, ‘hline’, ‘freeline’. Default is ‘polygon’.

  • label (Optional[str]) – Only for ‘draw’ mode, sent in drawing events.

  • zoomOnWheel (bool) – Toggle zoom on wheel support

  • source – A user-defined object (typically the caller object) that will be send in the interactiveModeChanged event, to identify which object required a mode change. Default: None

  • width (Optional[float]) – Width of the pencil. Only for draw pencil mode.

PlotWidget.getGraphCursor()[source]#

Returns the state of the crosshair cursor.

See setGraphCursor().

Returns:

None if the crosshair cursor is not active, else a tuple (color, linewidth, linestyle).

PlotWidget.setGraphCursor(flag=False, color='black', linewidth=1, linestyle='-')[source]#

Toggle the display of a crosshair cursor and set its attributes.

Parameters:
  • flag (bool) – Toggle the display of a crosshair cursor. The crosshair cursor is hidden by default.

  • color (A string (either a predefined color name in colors.py or "#RRGGBB")) or a 4 columns unsigned byte array (Default: black).) – The color to use for the crosshair.

  • linewidth (int) – The width of the lines of the crosshair (Default: 1).

  • linestyle (str) –

    Type of line:

    - ' ' no line
    - '-' solid line (the default)
    - '--' dashed line
    - '-.' dash-dot line
    - ':' dotted line
    

PlotWidget.isPanWithArrowKeys()[source]#

Returns whether or not panning the graph with arrow keys is enabled.

See setPanWithArrowKeys().

PlotWidget.setPanWithArrowKeys(pan=False)[source]#

Enable/Disable panning the graph with arrow keys.

This grabs the keyboard.

Parameters:

pan (bool) – True to enable panning, False to disable.

Coordinates conversion#

PlotWidget.getDataRange()[source]#

Returns this PlotWidget’s data range.

Returns:

a namedtuple with the following members : x, y (left y axis), yright. Each member is a tuple (min, max) or None if no data is associated with the axis.

Return type:

namedtuple

PlotWidget.getPlotBoundsInPixels()[source]#

Plot area bounds in widget coordinates in pixels.

Returns:

bounds as a 4-tuple of int: (left, top, width, height)

PlotWidget.dataToPixel(x=None, y=None, axis='left', check=True)[source]#

Convert a position in data coordinates to a position in pixels.

Parameters:
  • x (float or 1D numpy array of float) – The X coordinate in data space. If None (default) the middle position of the displayed data is used.

  • y (float or 1D numpy array of float) – The Y coordinate in data space. If None (default) the middle position of the displayed data is used.

  • axis (str) – The Y axis to use for the conversion (‘left’ or ‘right’).

  • check (bool) – True to return None if outside displayed area, False to convert to pixels anyway

Returns:

The corresponding position in pixels or None if the data position is not in the displayed area and check is True.

Return type:

A tuple of 2 floats or 2 arrays of float: (xPixel, yPixel) or None.

PlotWidget.pixelToData(x, y, axis='left', check=False)[source]#

Convert a position in pixels to a position in data coordinates.

Parameters:
  • x (float) – The X coordinate in pixels. If None (default) the center of the widget is used.

  • y (float) – The Y coordinate in pixels. If None (default) the center of the widget is used.

  • axis (str) – The Y axis to use for the conversion (‘left’ or ‘right’).

  • check (bool) – Toggle checking if pixel is in plot area. If False, this method never returns None.

Returns:

The corresponding position in data space or None if the pixel position is not in the plot area.

Return type:

A tuple of 2 floats: (xData, yData) or None.

Active Item#

PlotWidget.setActiveCurveSelectionMode(mode)[source]#

Sets the current selection mode.

Parameters:

mode (str) – The active curve selection mode to use. It can be: ‘legacy’, ‘atmostone’ or ‘none’.

PlotWidget.getActiveCurveSelectionMode()[source]#

Returns the current selection mode.

It can be “atmostone”, “legacy” or “none”.

Return type:

str

PlotWidget.getActiveCurveStyle()[source]#

Returns the current style applied to active curve

Return type:

CurveStyle

PlotWidget.setActiveCurveStyle(color=None, linewidth=None, linestyle=None, symbol=None, symbolsize=None)[source]#

Set the style of active curve

Parameters:
  • color – Color

  • linestyle (Union[str,None]) – Style of the line

  • linewidth (Union[float,None]) – Width of the line

  • symbol (Union[str,None]) – Symbol of the markers

  • symbolsize (Union[float,None]) – Size of the symbols

PlotWidget.getActiveCurve(just_legend=False)[source]#

Return the currently active curve.

It returns None in case of not having an active curve.

Parameters:

just_legend (bool) – True to get the legend of the curve, False (the default) to get the curve data and info.

Returns:

Active curve’s legend or corresponding items.Curve

Return type:

str or items.Curve or None

PlotWidget.setActiveCurve(legend)[source]#

Make the curve associated to legend the active curve.

Parameters:

legend (str or None) – The legend associated to the curve or None to have no active curve.

PlotWidget.getActiveImage(just_legend=False)[source]#

Returns the currently active image.

It returns None in case of not having an active image.

Parameters:

just_legend (bool) – True to get the legend of the image, False (the default) to get the image data and info.

Returns:

Active image’s legend or corresponding image object

Return type:

str, items.ImageData, items.ImageRgba or None

PlotWidget.setActiveImage(legend)[source]#

Make the image associated to legend the active image.

Parameters:

legend (str) – The legend associated to the image or None to have no active image.

Misc.#

PlotWidget.getWidgetHandle()[source]#

Return the widget the plot is displayed in.

This widget is owned by the backend.

PlotWidget.saveGraph(filename, fileFormat=None, dpi=None)[source]#

Save a snapshot of the plot.

Supported file formats depends on the backend in use. The following file formats are always supported: “png”, “svg”. The matplotlib backend supports more formats: “pdf”, “ps”, “eps”, “tiff”, “jpeg”, “jpg”.

Parameters:
  • filename (str, StringIO or BytesIO) – Destination

  • fileFormat (str) – String specifying the format

Returns:

False if cannot save the plot, True otherwise

Signals#

The PlotWidget provides the following Qt signals:

PlotWidget.sigPlotSignal#

Signal for all events of the plot.

The signal information is provided as a dict. See the plot signal documentation page for information about the content of the dict

PlotWidget.sigSetKeepDataAspectRatio#

Signal emitted when plot keep aspect ratio has changed

PlotWidget.sigSetGraphGrid#

Signal emitted when plot grid has changed

PlotWidget.sigSetGraphCursor#

Signal emitted when plot crosshair cursor has changed

PlotWidget.sigSetPanWithArrowKeys#

Signal emitted when pan with arrow keys has changed

PlotWidget.sigItemAdded#

Signal emitted when an item was just added to the plot

It provides the added item.

PlotWidget.sigItemAboutToBeRemoved#

Signal emitted right before an item is removed from the plot.

It provides the item that will be removed.

PlotWidget.sigContentChanged#

Signal emitted when the content of the plot is changed.

It provides the following information:

  • action: The change of the plot: ‘add’ or ‘remove’

  • kind: The kind of primitive changed: ‘curve’, ‘image’, ‘scatter’, ‘histogram’, ‘item’ or ‘marker’

  • legend: The legend of the primitive changed.

PlotWidget.sigActiveCurveChanged#

Signal emitted when the active curve has changed.

It provides the following information:

  • previous: The legend of the previous active curve or None

  • legend: The legend of the new active curve or None if no curve is active

PlotWidget.sigActiveImageChanged#

Signal emitted when the active image has changed.

It provides the following information:

  • previous: The legend of the previous active image or None

  • legend: The legend of the new active image or None if no image is active

PlotWidget.sigActiveScatterChanged#

Signal emitted when the active Scatter has changed.

It provides the following information:

  • previous: The legend of the previous active scatter or None

  • legend: The legend of the new active image or None if no image is active

PlotWidget.sigInteractiveModeChanged#

Signal emitted when the interactive mode has changed

It provides the source as passed to setInteractiveMode().