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.
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.
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
TimeSeriesScalar
s 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 andtimings/b
has scalar value 20, I'd likea
to be rendered as a filled region from 0 to 10 andb
to be rendered as a filled region from 10 to 30 (offset upward to avoid overlappinga
).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.