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

如何在Altair分组堆叠条形图中添加百分比文本?

解决Altair分组堆叠条形图添加文本标签的问题

直接在分层子图中设置column分面会触发“分层图表无法分面”的错误,正确的做法是将分面配置应用于整个图层组合,而非单个子图表。以下是两种可行的实现方案:

方案一:添加实际数值标签

# 定义基础共享编码
base = alt.Chart(df1).encode(
    x=alt.X('Week:N', title=None),
    color=alt.Color('Platform Type Name:N',
                    scale=alt.Scale(range=['#636EFA', '#EF553B','#00CC96']))
)

# 绘制堆叠条形图
bar = base.mark_bar().encode(
    y=alt.Y('sum(Net Gross Booking Value USD):Q',
            axis=alt.Axis(grid=True, title=None))
)

# 绘制文本标签,对齐到条形中心
text = base.mark_text(align='center', color='white', fontSize=10).encode(
    y=alt.Y('sum(Net Gross Booking Value USD):Q', stack='zero'),
    text=alt.Text('sum(Net Gross Booking Value USD):Q', format='.2f')
)

# 组合图层并应用分面
chart = alt.layer(bar, text).facet(
    column=alt.Column('Country Name:N', title=None)
)
chart

方案二:添加百分比标签

如果需要显示每个类别在分组内的占比,先通过数据转换计算百分比:

# 基础图表:先计算分组总金额,再计算占比
base = alt.Chart(df1).transform_joinaggregate(
    total_booking='sum(Net Gross Booking Value USD)',
    groupby=['Week', 'Country Name']
).transform_calculate(
    pct='datum["sum(Net Gross Booking Value USD)"] / datum.total_booking'
).encode(
    x=alt.X('Week:N', title=None),
    color=alt.Color('Platform Type Name:N',
                    scale=alt.Scale(range=['#636EFA', '#EF553B','#00CC96']))
)

# 堆叠条形图(保留实际金额y轴)
bar = base.mark_bar().encode(
    y=alt.Y('sum(Net Gross Booking Value USD):Q',
            axis=alt.Axis(grid=True, title=None))
)

# 百分比文本标签
text = base.mark_text(align='center', color='white', fontSize=10).encode(
    y=alt.Y('sum(Net Gross Booking Value USD):Q', stack='zero'),
    text=alt.Text('pct:Q', format='.0%')
)

# 组合图层并应用分面
chart = alt.layer(bar, text).facet(
    column=alt.Column('Country Name:N', title=None)
)
chart

关键说明

  • 将共享的x、color等配置提取到base图表,减少重复代码
  • 使用alt.layer()合并条形图与文本图层,再通过facet()统一设置分面,避免分层图表分面的错误
  • 通过stack='zero'确保文本标签与堆叠条形的位置对齐,显示在对应条形的中心
  • 可通过format参数调整数值显示格式(如保留小数位数、百分比样式)

内容的提问来源于stack exchange,提问作者Ania Lewicka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:50:32