Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stacked area charts in time series view #4622

Open
kpreid opened this issue Dec 26, 2023 · 1 comment
Open

Stacked area charts in time series view #4622

kpreid opened this issue Dec 26, 2023 · 1 comment
Labels
enhancement New feature or request 🍏 primitives Relating to Rerun primitives
Milestone

Comments

@kpreid
Copy link
Collaborator

kpreid commented Dec 26, 2023

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.

@kpreid kpreid added enhancement New feature or request 👀 needs triage This issue needs to be triaged by the Rerun team labels Dec 26, 2023
@nikolausWest nikolausWest added this to the Triage milestone Jan 2, 2024
@nikolausWest nikolausWest added 🍏 primitives Relating to Rerun primitives and removed 👀 needs triage This issue needs to be triaged by the Rerun team labels Jan 2, 2024
@nikolausWest nikolausWest modified the milestones: Triage, 0.13 Jan 15, 2024
@jleibs
Copy link
Member

jleibs commented Jan 29, 2024

A couple of complexities to consider when investigating this:

  • Need a way to order stacked elements. Right now the only option would be to sort based on something like entity-path-order, but this should probably have a dedicated component.
  • Data-interpolation when stacking non-aligned time-series. As the data sources would be separate entities, there is no guarantee they have data records at the same time-points. This might mean stacking one line on top of interpolated results from lower in the stack. A linear interpolation is probably a good starting point for lines, but things like bar-charts might need a different kind of span/aggregation function for alignment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request 🍏 primitives Relating to Rerun primitives
Projects
None yet
Development

No branches or pull requests

4 participants