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

Plotly一键显示所有堆叠条形图信息的方法咨询

Plotly堆叠条形图一键显示所有条形信息方案

一、直接固定字体大小显示所有条形数值

Plotly支持直接为所有堆叠条形添加固定大小的文本标签,完全不受条形宽度影响。通过以下核心参数实现:

  • text:传入每个条形对应的数值内容
  • textfont:统一设置字体大小(比如dict(size=10)),强制所有文本尺寸一致
  • textposition:控制文本位置(细条形推荐'outside',避免被条形本身遮挡)

示例代码(Plotly Express):

import plotly.express as px
df = px.data.tips()

fig = px.bar(df, x="day", y="total_bill", color="sex", barmode="stack",
             text="total_bill",  # 绑定要显示的数值
             textfont=dict(size=10))  # 固定字体大小

fig.update_traces(textposition='outside')  # 把文本放在条形外侧
fig.show()

二、添加按钮一键切换显示/隐藏所有信息

如果需要保留默认的悬停查看逻辑,同时支持一键显示全部条形信息,可以通过updatemenus添加切换按钮,动态更新文本的显示状态:

示例代码:

import plotly.graph_objects as go
import pandas as pd

# 模拟堆叠条形图数据
df = pd.DataFrame({
    '分类': ['A', 'A', 'B', 'B'],
    '子分类': ['X', 'Y', 'X', 'Y'],
    '数值': [10, 3, 15, 2]
})

# 初始化图表,默认不显示文本
fig = go.Figure()
for subcat in df['子分类'].unique():
    sub_df = df[df['子分类'] == subcat]
    fig.add_trace(go.Bar(
        x=sub_df['分类'],
        y=sub_df['数值'],
        name=subcat,
        text=[],  # 默认空文本,不显示
        textfont=dict(size=10)
    ))

# 添加切换按钮
fig.update_layout(
    updatemenus=[
        dict(
            type="buttons",
            direction="right",
            x=0.7,
            y=1.15,
            buttons=list([
                dict(
                    label="显示所有数值",
                    method="update",
                    args=[
                        {"text": [df[df['子分类'] == 'X']['数值'], 
                                  df[df['子分类'] == 'Y']['数值']]},
                        {"textposition": "outside"}
                    ]
                ),
                dict(
                    label="隐藏所有数值",
                    method="update",
                    args=[
                        {"text": [[], []]},
                        {}
                    ]
                )
            ]),
        )
    ]
)

fig.update_layout(barmode='stack')
fig.show()

核心参数说明

  • text:控制每个条形的显示内容,传入空列表即可隐藏文本
  • textfont.size:强制统一所有文本的字体大小,彻底解决细条形文本过小的问题
  • updatemenus:通过按钮触发update方法,动态修改text属性实现显示/隐藏切换

内容的提问来源于stack exchange,提问作者Mechatronik Karlsruhe Institut

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:22:20