Plot

Plot arbitrary values from topic paths, specified using message path syntax.

When playing back a pre-recorded data source (e.g. a local or remote .bag file), this panel will preload the data belonging to the specified topic paths for the whole playback timeline.

Current playback time will be indicated by a vertical gray bar.

Y-Axis

Using message path syntax, specify the path to the y-axis data you want to plot. Alternatively, enter a number to add a horizontal line at that value.

If you enter a message path that points to multiple values (e.g. /some_topic/some_array[:].x), the plot will display a scatter plot of points at each x-axis tick.

plot panel

X-Axis

There are 3 possible values for the x-axis: incoming messages' timestamp, y-axis values' indices, or data at a user-specified message path.

All Plot panels with a time-based x-axis will automatically be synced with each other – when a user pans or zooms in one time-based Plot panel, all other time-based Plot panels will pan or zoom accordingly to maintain the same viewport.

Timestamp

By default, the panel plots y-values against incoming messages' timestamp. It is possible to specify whether the timestamp is taken from message's receive time or its header stamp. All Plot panels with timestamp x-axes in a given layout will be kept in sync for easy comparison.

plot with timestamp x-axis

Index

In this mode, adding message path /some_topic.some_array as a new line in the plot will chart that array's values against their respective indices. For example, if /some_topic.some_array contained the values [5, 10, 15], the resulting points on the chart would be [0, 5], [1, 10], and [2, 15].

This plots just the data from the latest tick, and should always point to an array of values.

plot with index x-axis

Message path

Using message path syntax, specify the path to the x-axis data you want to plot, e.g. /some_topic.position.x. You can choose to plot data from just the most recent tick ("msg path (current)") or from all matching messages throughout playback ("msg path (accumulated)").

plot with path x-axis - current

plot with path x-axis - accumulated

User interactions

Scroll to zoom, and drag to pan. By default, scrolling will zoom horizontally only. To zoom vertically, hold v while scrolling. To zoom horizontally and vertically at the same time, hold b while scrolling.

Click the "reset view" button or double-click the panel to reset to the original viewport.

Hover over any point on the plot to see its details in a tooltip. You'll see a vertical yellow bar appear, as well as a corresponding yellow marker at the same on the playback timeline.

Click to seek playback to the yellow marker on the timeline.

Pro tips

The following Math functions are available to append to your Plot panel's message paths:

  • .@abs
  • .@acos
  • .@asin
  • .@atan
  • .@ceil
  • .@cos
  • .@derivative
  • .@log
  • .@log1p
  • .@log2
  • .@log10
  • .@negative
  • .@round
  • .@sign
  • .@sin
  • .@sqrt
  • .@tan
  • .@trunc

Note that .@derivative will not work with scatter plots (i.e. message paths that point to an array of values for each x-axis tick).

See the Javascript Math documentation for more details.

Settings

  • Title - Plot title
  • Y max - Fixed maximum value for y-axis.
  • Y min - Fixed minimum value for y-axis.
  • X range in seconds (for timestamp plots only) - The plot's "viewport" (i.e. width in seconds) as it follows playback.

Shortcuts

  • Scroll – Zoom horizontally
  • v + Scroll – Zoom vertically
  • b + Scroll – Zoom both horizontally and vertically