Plot arbitrary values from topics using message path syntax.


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


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


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


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.

Click anywhere within the plot to seek playback to that point's corresponding time.

Pro tips

To take the derivative of a value (change per second), use the special .@derivative modifier. This does not work with scatter plots (when using slices).

To switch the sign of a value, use the .@negative modifier at the end of a message path. The following math functions are also available: .@abs, .@acos, .@asin, .@atan, .@ceil, .@cos, .@log, .@log1p, .@log2, .@log10, .@round, .@sign, .@sin, .@sqrt, .@tan, and .@trunc. See the Javascript Math documentation for more details.

Panel settings

  • 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.

Keyboard shortcuts

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