Repository: streamlit/streamlit

Issue:
Width of Altair vconcat chart not correct
# Summary

I am trying to implement multiple concatenated charts with same x-axis to share a selection functionality. When adding them to streamlit one at a time, the width seems to adjust to the container automatically, but something goes wrong when adding the concatenated charts.

# Steps to reproduce

Code snippet:

[![Open in Streamlit Cloud](https://static.streamlit.io/badges/streamlit_badge_black_white.svg)](https://issues.streamlitapp.com/?issue=gh-2751)

```
import pandas as pd
import numpy as np
import altair as alt
import streamlit as st

st.set_page_config( layout='wide')

x = np.linspace(10,100, 10)
y1 = 5*x
y2 = 1/x

df1 = pd.DataFrame.from_dict({'x': x,'y1': y1, 'y2': y2})

c1 = alt.Chart(df1).mark_line(
).encode(
    alt.X('x'),
    alt.Y('y1')
)

c2 = alt.Chart(df1).mark_line(
).encode(
    alt.X('x'),
    alt.Y('y2')
)

#Individual, Static Charts
st.altair_chart(c1, use_container_width = True)
st.altair_chart(c2, use_container_width = True)

#Concatenated Charts with shared zoom function
zoom = alt.selection_interval(bind = 'scales', encodings = ['x'])
st.altair_chart(c1.add_selection(zoom) & c2.add_selection(zoom), use_container_width = True)

```
## Expected behavior:

Concatenated charts of full width with zoom functionality.

## Actual behavior:

Concatenated charts of standard width with zoom functionality

## Is this a regression?

No.

# Debug info

- Streamlit version: 0.76.0
- Python version: 3.8.5
- Using PipEnv
- OS version: macOS Mojave
- Browser version: Chrome

# Additional information
![Skærmbillede 2021-02-07 kl  04 48 58](https://user-images.githubusercontent.com/6786516/107136004-d5ed9b00-68ff-11eb-8dc7-e9ad51ed5eed.png)




Discussion:
I have this problem too. I'm using vconcat to share the legend across multiple charts, but doing so prevents the charts from filling the container width.
I also experience this issue. Just commented on #700 as I only noticed this open issue just now :)
I also have this problem.
This issue stems from how the width is set when `useContainerWidth` is true in `streamlit/frontend/src/components/elements/VegaLiteChart/VegaLiteChart.tsx`. 

When you create a `vconcat` chart, the `spec` that is created has a field called `vconcat`, which is an array holding encoding, mark, and width information about each subchart. Currently, this width field is not being set when `useContainerWidth` is true.

The fix is to introduce this `updateWidth()` function, and then update the `generateSpec()` function:

```javascript
private updateWidth = (spec: any, width: number) => {
  spec.width = width
  if (spec.vconcat) {
    for (const chart of spec.vconcat) {
      chart.width = width - EMBED_PADDING // vconcat charts need the embed padding twice
    }
  }
}

public generateSpec = (): any => {
  const { element: el, theme } = this.props
  const spec = JSON.parse(el.get("spec"))
  const useContainerWidth = JSON.parse(el.get("useContainerWidth"))

  spec.config = configWithThemeDefaults(spec.config, theme)
  if (this.props.height) {
    // fullscreen
    this.updateWidth(spec, this.props.width - EMBED_PADDING)
    spec.height = this.props.height
  } else if (useContainerWidth) {
    this.updateWidth(spec, this.props.width - EMBED_PADDING)
  }
  // Function continues below ...
```

While testing this fix, I saw that there are still noticeable width issues with `vconcat` charts when the length of the labels of the y-axis are long. In this case, the chart ends up being wider than it should be. I am not currently sure what the fix for this is, but I imagine there is something else in the `spec` that needs to be set. Any guidance on fixing this long label issue would be helpful.
Hi, any update on this, like a target release date?
I played around with @kylelrichards11 code and modified it to work with both hconcat and vconcat.
A few things I changed:
1. First recursively compute the base width/height of all the charts
    - `hconcat`: the width is equal to the sum of the individual chart widths.
       The height is equal to the heighest individual chart.
    - `vconcat`: the width is equal to the biggest width of the individual charts.
       The height is equal to the sum
    - `single`: Use spec.width or TopLevelSpec.config.view.ContinuousWidth if there is no width for that chart.
       Idem for height.
2. Adapt the widths of the individual charts as explained above, but keep the different chart ratios by using the hconcat/vconcat widths. (Note: You only need to set width/height for the base charts and not on the concat charts)

As @kylelrichards11 mentioned, this almost seems to work, besides some issues with long tick labels.
I tracked this issue a little further and it seems to be because vega-lite does not support the autosize `fit` type for concatenated charts. This means that the chart's width/height are not adapted to take into account the required space for the labels and thus our charts are bigger than we want.
This is a known vega-lite limitation and they cannot / wont fix it until there is a change in vega, which does not seem to be happening any time soon. ([vega-lite](https://github.com/vega/vega-lite/issues/2992) - [vega](https://github.com/vega/vega/issues/1444))

AFAIK, there is thus no real solution to this for streamlit, without fixing both issues mentioned above.


For those interested, here is my code, which almost works, except for that annoying label issue.
For vconcat the results are not too bad, since there is only one Y label to take into account, but with hconcat the issues stack, because each chart adds an extra axis.

I am pretty annoyed at this issue and might look to see if things are better with Bokeh... :disappointed: 

<details>
<summary> <b>code</b> </summary>

```tsx
/*********
 * TYPES *
 *********/
type Size = [number, number]

/*********
 * FUNCS *
 *********/
function getChartSize(spec: any, defaultSize: Size): Size {
  if ("hconcat" in spec) {
    // Sum widths & maximum height
    return spec.hconcat
      .map((subspec: any) => getChartSize(subspec, defaultSize))
      .reduce(([w0, h0]: Size, [w1, h1]: Size) => [w0 + w1, Math.max(h0, h1)])
  }

  if ("vconcat" in spec) {
    // Maximum width & sum heights
    return spec.vconcat
      .map((subspec: any) => getChartSize(subspec, defaultSize))
      .reduce(([w0, h0]: Size, [w1, h1]: Size) => [Math.max(w0, w1), h0 + h1])
  }

  // Set width & height for updateChartSize
  spec.width = spec?.width ?? defaultSize[0]
  spec.height = spec?.height ?? defaultSize[1]
  return [spec.width, spec.height]
}

function updateChartSize(spec: any, chartSize: Size, viewWidth: number, viewHeight: number | undefined): void {
  if ("hconcat" in spec) {
    spec.hconcat.forEach((subspec: any) =>
      updateChartSize(
        subspec,
        chartSize,
        viewWidth - EMBED_PADDING,
        viewHeight
      )
    )
  } else if ("vconcat" in spec) {
    spec.vconcat.forEach((subspec: any) =>
      updateChartSize(
        subspec,
        chartSize,
        viewWidth - EMBED_PADDING,
        viewHeight
      )
    )
  } else {
    // Rescale Width & Height whilst maintaining ratio
    spec.width *= viewWidth / chartSize[0]
    if (viewHeight) {
      spec.height *= viewHeight / chartSize[1]
    }
  }
}

/***********
 * UPDATES *
 **********/
// Update code in generateSpec()
if (this.props.height || useContainerWidth) {
  // Adapt chart to viewport width
  const chartSize = getChartSize(
    spec,
    [spec.config.view.continuousWidth, spec.config.view.continuousHeight]
  )
  updateChartSize(
    spec,
    chartSize,
    this.props.width - EMBED_PADDING,
    this.props.height
  )
}
```

</details>

**EDIT**  
I also pushed my code changes above to a [branch](https://github.com/0phoff/streamlit/tree/dev-altair_concat) on my forked repository.  
I did not write any tests, because this does not work as intended and thus I will not push this to the main branch.  
However, I tested this with a small demo application (see screenshot below).

<details>
<summary> <b>demo screenshot</b> </summary>

![altair_autosize_issue](https://user-images.githubusercontent.com/11853089/139419056-46949f93-34ed-4b18-9b1a-465dc42a2727.png)

</details>
Does the recent label change mean someone is working on this? Would be great to understand if it has been prioritised or if more information is needed! 
Would also be happy about a fix
Thought I'd mention: Altair only provides interactivity between charts when they are concatenated (e.g. shared selections), so this width issue locks out some great functionalities of altair if a user wants to have charts with dynamic sizing. Thanks in advance for a fix!
Adding to the chorus that a fix would be appreciated. 
does `autosize='fit-x' help here?
```python
chart = alt.vconcat(c1.add_selection(zoom) & c2.add_selection(zoom)).configure(autosize='fit-x')
st.altair_chart(chart, use_container_width = True)
```

Resolving patch:
diff --git a/e2e_playwright/st_altair_chart.py b/e2e_playwright/st_altair_chart.py
--- a/e2e_playwright/st_altair_chart.py
+++ b/e2e_playwright/st_altair_chart.py
@@ -23,7 +23,6 @@
 data = np.random.randn(200, 3)
 df = pd.DataFrame(data, columns=["a", "b", "c"])
 chart = alt.Chart(df).mark_circle().encode(x="a", y="b", size="c", color="c")
-st.altair_chart(chart, theme=None)
 
 st.write("Show default vega lite theme:")
 st.altair_chart(chart, theme=None)
@@ -105,3 +104,15 @@
 
 new_base_chart = base.mark_line() + base.mark_point()
 st.altair_chart(new_base_chart)
+
+x = np.linspace(10, 100, 10)
+y1 = 5 * x
+y2 = 1 / x
+
+df1 = pd.DataFrame.from_dict({"x": x, "y1": y1, "y2": y2})
+
+c1 = alt.Chart(df1).mark_line().encode(alt.X("x"), alt.Y("y1"))
+
+c2 = alt.Chart(df1).mark_line().encode(alt.X("x"), alt.Y("y2"))
+
+st.altair_chart(c1 & c2, use_container_width=True)
diff --git a/lib/streamlit/elements/arrow_vega_lite.py b/lib/streamlit/elements/arrow_vega_lite.py
--- a/lib/streamlit/elements/arrow_vega_lite.py
+++ b/lib/streamlit/elements/arrow_vega_lite.py
@@ -155,7 +155,14 @@ def marshall(
         raise ValueError("Vega-Lite charts require a non-empty spec dict.")
 
     if "autosize" not in spec:
-        spec["autosize"] = {"type": "fit", "contains": "padding"}
+        # type fit does not work for many chart types. This change focuses
+        # on vconcat with use_container_width=True as there are unintended
+        # consequences of changing the default autosize for all charts.
+        # fit-x fits the width and height can be adjusted.
+        if "vconcat" in spec and use_container_width:
+            spec["autosize"] = {"type": "fit-x", "contains": "padding"}
+        else:
+            spec["autosize"] = {"type": "fit", "contains": "padding"}
 
     # Pull data out of spec dict when it's in a 'datasets' key:
     #   marshall(proto, {datasets: {foo: df1, bar: df2}, ...})


Test patch:
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[dark_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[dark_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[dark_theme-firefox].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[dark_theme-firefox].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[dark_theme-webkit].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[dark_theme-webkit].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[light_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[light_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[light_theme-firefox].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[light_theme-firefox].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[light_theme-webkit].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[light_theme-webkit].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-bar_chart_overwritten_theme[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[dark_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[dark_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[dark_theme-firefox].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[dark_theme-firefox].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[dark_theme-webkit].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[dark_theme-webkit].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[light_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[light_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[light_theme-firefox].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[light_theme-firefox].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[light_theme-webkit].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[light_theme-webkit].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_default_theme[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[dark_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[dark_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[dark_theme-firefox].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[dark_theme-firefox].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[dark_theme-webkit].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[dark_theme-webkit].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[light_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[light_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[light_theme-firefox].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[light_theme-firefox].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[light_theme-webkit].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[light_theme-webkit].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_bar_chart_streamlit_theme[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_layered_line_chart_streamlit_theme[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_layered_line_chart_streamlit_theme[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_layered_line_chart_streamlit_theme[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_layered_line_chart_streamlit_theme[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_layered_line_chart_streamlit_theme[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_layered_line_chart_streamlit_theme[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_layered_line_chart_streamlit_theme[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_layered_line_chart_streamlit_theme[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_layered_line_chart_streamlit_theme[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_layered_line_chart_streamlit_theme[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_layered_line_chart_streamlit_theme[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_layered_line_chart_streamlit_theme[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_layered_line_chart_streamlit_theme[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_layered_line_chart_streamlit_theme[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_layered_line_chart_streamlit_theme[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_layered_line_chart_streamlit_theme[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_layered_line_chart_streamlit_theme[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_layered_line_chart_streamlit_theme[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_theme[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_theme[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_theme[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_theme[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_theme[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_theme[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_theme[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_theme[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_theme[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_theme[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_theme[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_theme[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_theme[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_theme[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_theme[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_theme[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_theme[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_theme[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_themest_altair_chart-grouped_layered_line_chart_streamlit_theme[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_themest_altair_chart-grouped_layered_line_chart_streamlit_theme[dark_theme-chromium].png
deleted file mode 100644
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_themest_altair_chart-grouped_layered_line_chart_streamlit_theme[dark_theme-chromium].png and /dev/null differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_themest_altair_chart-grouped_layered_line_chart_streamlit_theme[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_themest_altair_chart-grouped_layered_line_chart_streamlit_theme[dark_theme-firefox].png
deleted file mode 100644
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_themest_altair_chart-grouped_layered_line_chart_streamlit_theme[dark_theme-firefox].png and /dev/null differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_themest_altair_chart-grouped_layered_line_chart_streamlit_theme[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_themest_altair_chart-grouped_layered_line_chart_streamlit_theme[dark_theme-webkit].png
deleted file mode 100644
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_themest_altair_chart-grouped_layered_line_chart_streamlit_theme[dark_theme-webkit].png and /dev/null differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_themest_altair_chart-grouped_layered_line_chart_streamlit_theme[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_themest_altair_chart-grouped_layered_line_chart_streamlit_theme[light_theme-chromium].png
deleted file mode 100644
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_themest_altair_chart-grouped_layered_line_chart_streamlit_theme[light_theme-chromium].png and /dev/null differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_themest_altair_chart-grouped_layered_line_chart_streamlit_theme[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_themest_altair_chart-grouped_layered_line_chart_streamlit_theme[light_theme-firefox].png
deleted file mode 100644
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_themest_altair_chart-grouped_layered_line_chart_streamlit_theme[light_theme-firefox].png and /dev/null differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_themest_altair_chart-grouped_layered_line_chart_streamlit_theme[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_themest_altair_chart-grouped_layered_line_chart_streamlit_theme[light_theme-webkit].png
deleted file mode 100644
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-grouped_use_container_width_default_themest_altair_chart-grouped_layered_line_chart_streamlit_theme[light_theme-webkit].png and /dev/null differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[dark_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[dark_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[dark_theme-firefox].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[dark_theme-firefox].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[dark_theme-webkit].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[dark_theme-webkit].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[light_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[light_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[light_theme-firefox].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[light_theme-firefox].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[light_theme-webkit].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[light_theme-webkit].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-pie_chart_large_legend_items[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_default_theme[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_default_theme[dark_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_default_theme[dark_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_default_theme[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_default_theme[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_default_theme[dark_theme-firefox].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_default_theme[dark_theme-firefox].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_default_theme[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_default_theme[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_default_theme[light_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_default_theme[light_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_default_theme[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_default_theme[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_default_theme[light_theme-firefox].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_default_theme[light_theme-firefox].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_default_theme[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_overwritten_theme[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_overwritten_theme[dark_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_overwritten_theme[dark_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_overwritten_theme[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_overwritten_theme[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_overwritten_theme[dark_theme-firefox].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_overwritten_theme[dark_theme-firefox].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_overwritten_theme[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_overwritten_theme[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_overwritten_theme[light_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_overwritten_theme[light_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_overwritten_theme[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_overwritten_theme[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_overwritten_theme[light_theme-firefox].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_overwritten_theme[light_theme-firefox].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_overwritten_theme[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[dark_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[dark_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[dark_theme-firefox].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[dark_theme-firefox].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[dark_theme-webkit].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[dark_theme-webkit].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[light_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[light_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[light_theme-firefox].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[light_theme-firefox].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[light_theme-webkit].png
Binary files a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[light_theme-webkit].png and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-scatter_chart_streamlit_theme[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-vconcat_width[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-vconcat_width[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-vconcat_width[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-vconcat_width[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-vconcat_width[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-vconcat_width[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-vconcat_width[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-vconcat_width[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-vconcat_width[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-vconcat_width[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-vconcat_width[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-vconcat_width[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-vconcat_width[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-vconcat_width[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-vconcat_width[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-vconcat_width[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-vconcat_width[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_altair_chart_test/st_altair_chart-vconcat_width[light_theme-webkit].png differ
diff --git a/e2e_playwright/st_altair_chart_test.py b/e2e_playwright/st_altair_chart_test.py
--- a/e2e_playwright/st_altair_chart_test.py
+++ b/e2e_playwright/st_altair_chart_test.py
@@ -33,8 +33,9 @@ def test_altair_chart_displays_correctly(
         "st_altair_chart-pie_chart_large_legend_items",
         "st_altair_chart-grouped_bar_chart_default_theme",
         "st_altair_chart-grouped_bar_chart_streamlit_theme",
-        "st_altair_chart-grouped_use_container_width_default_theme"
+        "st_altair_chart-grouped_use_container_width_default_theme",
         "st_altair_chart-grouped_layered_line_chart_streamlit_theme",
+        "st_altair_chart-vconcat_width",
     ]
     for i, name in enumerate(snapshot_names):
         assert_snapshot(