Skip to content

← visualization package

ImagePlotViewer

Plot streaming 2D data as a live image (heatmap) in real time.

This is the live counterpart of the offline Image Plot reporting node. A common use is a real-time ERP-image: streaming segmented epochs stacked as a heatmap with trial number on the Y axis, epoch-relative time on the X axis, and amplitude as color. Other commone uses are spectrograms (time x frequency, or space x frequency) or connectivity matrices (space x space). Set buffer trials to accumulate successive packets into a scrolling ERP-image when the instance (trial) axis is shown: new trials are appended and the most recent buffer trials are kept. At 1 (the default) each packet is shown on its own as a complete image. For a scrolling spectrogram / waterfall, buffer the data along time with a Moving Window node before this one. When neither axis is 'space' (i.e., instance x frequency) and the input has more than one channel, a single channel is shown at a time and you can use the PgUp/PgDn (or u/d) keys to cycle channels. The +/- keys adjust the color contrast and 'c' toggles the colorbar. To view data on a log scale or correct a spectrum's 1/f falloff, precede this node with a Logarithm or Frequency Normalization node respectively. This node requires the chosen X and Y axes to be present in the data. It supports headless rendering via the suppress window property, for use with the PlotDashboard node. Version 0.9.0

Ports/Properties

stream

Name of stream to plot. Wildcards are supported, i.e. mystream* will plot the first stream whose name starts with mystream.

  • verbose name: Select Stream To Display
  • default value: None
  • port type: StringPort
  • value type: str (can be None)

stream_name

  • verbose name: Stream Name
  • default value: None
  • port type: AliasPort
  • value type: str (can be None)

max_channels

Max number of channels to display at once. Note that a large number of channels can slow the plot down considerably, and is not recommended. Alternatively, instead of increasing this, use the PgUp/PgDn (or u/d) keys in the plot window to show the prev/next set of n channels (where n is this number).

  • verbose name: Max Channels To Plot
  • default value: 32
  • port type: IntPort
  • value type: int (can be None)

auto_line_colors

Automatically assign a different color to each line or bar. Takes precedence if selected. See colormap property to determine the color selection.

  • verbose name: Auto Assign Colors
  • default value: True
  • port type: BoolPort
  • value type: bool (can be None)

colormap

Colormap used to map data values to colors. See the matplotlib colormap documentation for the available options.

  • verbose name: Colormap
  • default value: Greens
  • port type: EnumPort
  • value type: str (can be None)

background_color

Background color. This can be hexadecimal (hex) notation (#RRGGBB) or CSS named colors ('white'). One resource (among many) that provides a list of both hex and CSS named colors is https://www.w3.org/wiki/CSS/Properties/color/keywords.

  • verbose name: Background Color
  • default value: #303030
  • port type: StringPort
  • value type: str (can be None)

decoration_color

Color of the axis labels and ticks. (See background_color description for details.).

  • verbose name: Decoration Color
  • default value: #B0B0B0
  • port type: StringPort
  • value type: str (can be None)

plot_minmax

Display min and max values of original data irrespective of scaling.

  • verbose name: Show Data Min/max Values
  • default value: False
  • port type: BoolPort
  • value type: bool (can be None)

title

Title of the plot window. The placeholders $(streamname), $(sourceid), and $(sourceurl) can be used here.

  • verbose name: Title
  • default value:
  • port type: StringPort
  • value type: str (can be None)

initial_dims

Initial position of the window on the monitor. This is given in pixels, and is formatted as [x, y, width, height]. If x, y are set to 0 each, then the window will appear in the top left corner of the current screen.

  • verbose name: Window Position
  • default value: [50, 50, 1000, 800]
  • port type: ListPort
  • value type: list (can be None)

left_offset

Left offset of the window on the monitor. The x value in the initial window position property will be increased by this amount. Use this to shift all plots to a second monitor, for example. May be a negative number (i.e., to move plots to a window to the left).

  • verbose name: Left Offset
  • default value: 0
  • port type: IntPort
  • value type: int (can be None)

show_toolbar

Show the window toolbar (which provides some additional functions).

  • verbose name: Show Toolbar
  • default value: False
  • port type: BoolPort
  • value type: bool (can be None)

always_on_top

Window should be always on top. If this is enabled, then the window will not be occluded by other windows.

  • verbose name: Display Window Always On Top
  • default value: False
  • port type: BoolPort
  • value type: bool (can be None)

tight_layout

Reduce the amount of white space around the plot within the window.

  • verbose name: Tight Layout
  • default value: True
  • port type: BoolPort
  • value type: bool (can be None)

font_size

Font size (in points) of text plotted outside the plot axes, such as axis labels, legend, etc.

  • verbose name: Font Size
  • default value: 11
  • port type: FloatPort
  • value type: float (can be None)

annotation_font_size

Font size (in points) for text which appear inside the plot axes, such as markers, scale, etc.

  • verbose name: Annotation Font Size
  • default value: 11
  • port type: FloatPort
  • value type: float (can be None)

antialiased

Draw graphics antialiased. If set to False, lines will appear more pixelated or 'jaggy', but plotting should render faster.

  • verbose name: Draw Antialiased Lines
  • default value: True
  • port type: BoolPort
  • value type: bool (can be None)

max_redraw_hz

Maximum redraw rate of this plot in Hz. Limits how often the matplotlib canvas is repainted (and, when the plot feeds a Plot Dashboard, how often the dashboard re-renders the corresponding panel). None means use the Plot Dashboard's default for downstream panels and no throttle for this node's own window. 0 means no throttle (legacy behavior, draw on every tick). A positive value is the upper bound on the redraw rate. Reducing this is particularly useful for nodes whose draw is expensive (e.g. matplotlib tables, which are heavy on macOS due to CoreText).

  • verbose name: Max Redraw Rate (Hz)
  • default value: None
  • port type: FloatPort
  • value type: float (can be None)

line_color

Color of the lines. (See background_color description for details.)

  • verbose name: Line Color
  • default value: white
  • port type: StringPort
  • value type: str (can be None)

zero_color

Color of the grid lines. (See background color description for details.)

  • verbose name: Zero Color
  • default value: #606060
  • port type: StringPort
  • value type: str (can be None)

line_width

Width of the lines (or bars).

  • verbose name: Line Width
  • default value: 1.25
  • port type: FloatPort
  • value type: float (can be None)

label_rotation

Orientation of plot Y axis tick labels.

  • verbose name: Label Rotation
  • default value: horizontal
  • port type: EnumPort
  • value type: str (can be None)

x_label

Label for the X axis. Leave empty to automatically use a suitable default.

  • verbose name: X Label
  • default value:
  • port type: StringPort
  • value type: str (can be None)

y_label

Label for the Y axis. Leave empty to automatically use a suitable default.

  • verbose name: Y Label
  • default value:
  • port type: StringPort
  • value type: str (can be None)

verbose

Print additional information such as if the incoming packet has no data to plot, etc.

  • verbose name: Verbose
  • default value: False
  • port type: BoolPort
  • value type: bool (can be None)

track_window_position

Track the window position and print the new position in the console. This is useful for setting the window position property.

  • verbose name: Track Window Position
  • default value: False
  • port type: BoolPort
  • value type: bool (can be None)

suppress_window

Suppress the display window. When enabled, the node will not open a plot window; use this when feeding the figure output into a Plot Dashboard node.

  • verbose name: Suppress Window
  • default value: False
  • port type: BoolPort
  • value type: bool (can be None)

figure_out

Plot data for PlotDashboard (PlotData).

  • verbose name: Figure Out
  • default value: None
  • port type: DataPort
  • value type: object (can be None)
  • data direction: OUT

data

Data to display.

  • verbose name: Data
  • default value: None
  • port type: DataPort
  • value type: Packet (can be None)
  • data direction: INOUT

x_axis

Axis to plot along the X (horizontal) axis of the image. For an ERP-image this is the epoch-relative time; for a spectrogram it is time, and so on. You may also specify an axis label such as 'feature.myfeatures'.

  • verbose name: X Axis
  • default value: space
  • port type: ComboPort
  • value type: str

y_axis

Axis to plot along the Y (vertical) axis of the image. For an ERP-image this is the trial (instance) axis; for a spectrogram it is frequency, etc. When this is the instance axis and buffer trials is above 1, successive packets are accumulated into a scrolling stack of the most recent buffer trials trials.

  • verbose name: Y Axis
  • default value: frequency
  • port type: ComboPort
  • value type: str

buffer_trials

Number of trials to show as a scrolling ERP-image: successive packets' trials are accumulated and the oldest are dropped once this many are shown (i.e . an ERP image with a sliding window). Set to 1 (the default) for no scrolling: each packet is then shown on its own as a complete image. Only applied when either the X or Y axis is set to "instance", ignored otherwise. For a scrolling spectrogram / waterfall, buffer the data along the time axis with a Moving Window node before this one instead.

  • verbose name: Buffer Length (Trials)
  • default value: 1
  • port type: IntPort
  • value type: int (can be None)

color_limits

Color range as a two-element list [lower, upper] -- data values when color limits type is values, or percentiles when it is percentile. A single-element list [upper] is treated as [0, upper]. Ignored when color limits type is minmax.

  • verbose name: Color Limits
  • default value: [0, 50]
  • port type: ListPort
  • value type: list (can be None)

color_limits_type

How to interpret color limits. values: use them as the fixed [min, max] data range (the most common case). percentile: use them as the lower and upper percentiles of the data (e.g. [2, 98] -> 2nd..98th percentile, a single [98] -> 0th..98th, empty -> 2nd..98th). It keeps a spike in one cell (e.g. a single frequency) from compressing the color range of everything else. minmax: ignore color limits and use the data min/max. With values the color-to-value mapping is fixed (stable over time); whereas with percentile and minmax the colorbar tracks the data and the scaling changes continuously, so only for use in special circumstances.

  • verbose name: Color Limits Type
  • default value: values
  • port type: EnumPort
  • value type: str (can be None)

colorbar

Show a colorbar next to the image. Toggle interactively with the 'c' key.

  • verbose name: Colorbar
  • default value: True
  • port type: BoolPort
  • value type: bool (can be None)

colorbar_title

Label for the colorbar.

  • verbose name: Colorbar Title
  • default value:
  • port type: StringPort
  • value type: str (can be None)

interpolation

Image interpolation. 'none' shows raw pixels (fastest); the others smooth the image at some rendering cost.

  • verbose name: Interpolation
  • default value: none
  • port type: EnumPort
  • value type: str (can be None)

set_breakpoint

Set a breakpoint on this node. If this is enabled, your debugger (if one is attached) will trigger a breakpoint.

  • verbose name: Set Breakpoint (Debug Only)
  • default value: False
  • port type: BoolPort
  • value type: bool (can be None)

metadata

User-definable meta-data associated with the node. Usually reserved for technical purposes.

  • verbose name: Metadata
  • default value: {}
  • port type: DictPort
  • value type: dict (can be None)