You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置use_container_width=True后Altair图表溢出容器的解决咨询

解决Altair多列图表溢出容器问题

问题根源

使用column分栏时,use_container_width=True仅控制图表整体的外层宽度,但每个分栏的宽度是默认固定值。当分栏数量较多时,所有分栏的总宽度会超出容器范围,导致溢出。

可行解决方案

1. 手动指定单分栏宽度

在alt.Column配置中添加width参数,根据分栏数量设置合适的单栏宽度,确保总宽度适配容器:

from vega_datasets import data
import altair as alt
import streamlit as st

source = data.barley()

b = alt.Chart(source).mark_bar().encode(
    x=alt.X('year:O', title=None),
    y='yield:Q',
    color='variety:N',
    column=alt.Column(
        'site:N', 
        title=None,
        header=alt.Header(labelColor='blue'),
        width=80  # 可根据分栏数量和容器宽度调整数值
    )
)
st.altair_chart(b, use_container_width=True)

2. 配置视图自适应宽度

通过configure_view设置分栏的连续宽度,让分栏自动适配容器:

from vega_datasets import data
import altair as alt
import streamlit as st

source = data.barley()

b = alt.Chart(source).mark_bar().encode(
    x=alt.X('year:O', title=None),
    y='yield:Q',
    color='variety:N',
    column=alt.Column(
        'site:N', 
        title=None,
        header=alt.Header(labelColor='blue')
    )
).configure_view(
    continuousWidth=80  # 控制每个分栏的宽度
)
st.altair_chart(b, use_container_width=True)

如果需要更灵活的适配,可以结合Streamlit的布局API获取容器宽度,动态计算单分栏宽度,但上述两种静态配置方式已能解决多数场景的溢出问题。

内容的提问来源于stack exchange,提问作者Melih Demirel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 09:25:19