rerun-io / rerun

Visualize streams of multimodal data. Fast, easy to use, and simple to integrate. Built in Rust using egui.
https://rerun.io/
Apache License 2.0
6.11k stars 277 forks source link

Stacked area charts in time series view #4622

Open kpreid opened 8 months ago

kpreid commented 8 months ago

Is your feature request related to a problem? Please describe.

I want to visualize self-profiling performance data (that is: how long various parts of a calculation took, per frame) in concert with other logged data (the result of the calculation). Right now, the only structure offered for displaying TimeSeriesScalars is many lines drawn independently on the same axes, which, for a large number of time series entities, produces a mess of overlapping lines.

Another problem I don't have, but which the proposed feature would be applicable to, is visualization of mutually-exclusive rates/proportions, like "X% of the points in the data set are currently class A, Y% are class B, and (100-X-Y)% are class C", or crates.io's download count chart.

Describe the solution you'd like

I would like to be able to cause the descendants of some entity, when they are time series, to be displayed as a stacked area chart — that is, if at some instant timings/a has scalar value 10 and timings/b has scalar value 20, I'd like a to be rendered as a filled region from 0 to 10 and b to be rendered as a filled region from 10 to 30 (offset upward to avoid overlapping a).

Describe alternatives you've considered

It would be possible for the data source to perform additions to create the boundary edges of such a chart. However, this would be nonlocal/fragile to implement, and would not create filled areas nor accurately display the original data values.

Additional context

2852 and #1732 are other requests for doing more things with time series, which might be interesting to consider simultaneously.

jleibs commented 7 months ago

A couple of complexities to consider when investigating this: