A 6-minute narrated walkthrough of using the Rerun UI to plot arbitrary scalar data from a dataset (MCAP) is available on Youtube.
This example demonstrates how to visualize arbitrary data, even when it was not logged with specific Rerun-semantics. With the "Any Scalar" feature, you can log complex data structures (like dictionaries or structs) once and use Selectors in the Blueprint to "pick" which internal fields to plot.
Key Benefits:
.position or .close).To run this example, make sure you have the required Python version, the Rerun repository checked out and the latest SDK installed:
pip install --upgrade rerun-sdk # install the latest Rerun SDK
git clone git@github.com:rerun-io/rerun.git # Clone the repository
cd rerun
git checkout latest # Check out the commit matching the latest SDK releaseInstall the necessary libraries specified in the requirements file:
pip install -e examples/python/any_scalarTo experiment with the provided example, simply execute the main Python script:
python -m any_scalar --demo robotics # Simulated PID control
python -m any_scalar --demo market # Real-time stock performanceIf you wish to explore additional features, use the CLI with the --help option for guidance:
python -m any_scalar --helpGoal: Visualize a control loop's internal state without logging separate scalars for every field.
In robotics_demo.py, we simulate a joint controller. Instead of logging error, effort, and position as individual Rerun entities, we log a single Telemetry struct per time step.
Tutorial highlights:
ControllerTelemetry object. Later, in the Blueprint, we "pick" which parts to see.Error field is plotted twice: once as a Line (to see trends) and once as Points (to see individual sample timing).Effort signal uses StepAfter interpolation, which accurately reflects how a digital controller holds its output constant between steps.is_stable flag is visualized as a step-function scalar (0/1).What you should see when running python -m any_scalar --demo robotics:
Goal: Compare multiple live data streams (tickers) using a centralized selector.
In market_demo.py, we fetch real stock data. We log the raw prices and a "normalized" % change field.
Tutorial highlights:
rerun.DynamicArchetype.jq-style selectors, like .prices.normalized and .prices.close, to power different parts of the dashboard.What you should see when running python -m any_scalar --demo market:
Goal: Plot values from dataset files without writing any code.
Because Rerun can now plot Any Scalar, you can drag an .mcap or .rrd file into the viewer and create a Time Series view. Use the UI in the viewer to drill into nested ROS messages or telemetry logs and start plotting immediately.
[!TIP] Watch the video at the top of this page to see a step-by-step walkthrough of how to use the UI to plot any field from an MCAP/RRD file.
Traditionally, to plot a graph, you had to log data specifically as one of Rerun's Scalar archetypes. With Any Scalar, you can log complex blobs (Dictionaries, TypedDicts, Arrow Structs) and Rerun will let you "map" internal fields to visualizers.
Rerun uses a path syntax inspired by jq to reach into your data:
.state.position -> reaches into the state dict and finds position..prices.normalized -> pulls the calculated performance from the market tick.