Stacked bars are offset by a wrong value
- Dominant language
- Rust
- Stars
- 468
- Forks
- 108
- Avg merge
- 15m
- Merged PRs (30d)
- 3
Description
**Describe the bug**
I was working on a little app with a stacked bar chart, and came across this possible bug (black lines were added in Paint for illustrative purposes):

Each bar chart is based upon a `Vec<(f64, f64)>`, which contains pairs of `(value, frequency)`, all vectors have the same length, `value` isn't being used as the `Bar`'s argument intentionally.
```Rust
// declared elsewhere
frequencies: Vec>,
// plot rendering
let mut charts = vec![];
for (frequencies, label) in self.frequencies.iter().zip(self.labels.iter()) {
let bars = frequencies
.iter()
.enumerate()
.filter(|(_, (_, f))| f > &0.0)
.map(|(i, (v, f))| Bar::new(i as f64, *f).width(self.width).name(v))
.collect();
let mut chart = BarChart::new(bars).name(&label);
if !self.vertical {
chart = chart.horizontal();
}
if charts.len() > 0 {
let other_charts: Vec<_> = charts.iter().collect();
chart = chart.stack_on(&other_charts);
}
charts.push(chart);
}
```
Zero frequencies are filtered out, so the total number of bars will vary. The reason for filtering is that a `Bar` with zero height will be rendered anyway, and to me it looks a little confusing (the plot's aspect ratio is different, but all values are the same):

Here, the offset values are correct, since the number of bars in both charts is the same.
**To Reproduce**
The easiest way to reproduce this behavior is to modify the demo app by commenting out [this line](https://github.com/emilk/egui/blob/ded8dbd45bc8616475c364878f6b8e2f7293d12c/crates/egui_demo_lib/src/demo/plot_demo.rs#L976):

**Expected behavior**
I expect the modified demo app to look like this:

**Additional context**
I assume it's a bug, since I never used stacked bar charts before.
Contributor guide
Assessment
This issue has not been assessed yet.