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

如何在Plotly Express堆叠条形图中仅显示T1的文本标注并隐藏T2标注

解决方案:在Plotly Express堆叠条形图中仅保留指定系列的文本标注

刚好我之前也遇到过类似的需求——既要保住Plotly Express的便捷性(比如facet_col这类功能),又要自定义部分系列的文本显示。这里有个简单直接的方法可以实现你的需求:

核心思路

Plotly Express生成的堆叠条形图里,每个颜色系列(也就是你的T1、T2)对应一个独立的trace对象。我们只需要找到对应T2的trace,清空它的文本标注内容即可,完全不会破坏PX框架的原有结构和功能。

修改后的完整代码

import pandas as pd
import plotly.express as px

df1 = pd.DataFrame()
df1['x'] = ['Product A', 'Product B', 'Product C']
df1['z'] = ['T1','T1','T1']
df1['y'] = [20, 14, 23]
df2 = pd.DataFrame()
df2['x'] = ['Product A', 'Product B', 'Product C']
df2['z'] = ['T2','T2','T2']
df2['y'] = [40, 10, 55]
df = df1.append(df2)

# 用PX生成堆叠条形图,正常设置文本标注参数
fig = px.bar(df, y="x", x="y", text='y', color='z', barmode='stack')

# 遍历所有trace,定位到T2系列并清空它的文本标注
for trace in fig.data:
    if trace.name == 'T2':
        trace.text = []  # 把文本数组设为空,就不会显示标注了
        # 也可以用 trace.textposition = 'none' 达到同样效果

fig.show()

为什么这个方法好用?

  • 完全保留了Plotly Express的所有特性,后续你要添加facet_col或者其他PX支持的参数,直接在px.bar()里追加即可,这个修改逻辑依然有效。比如你要加分面功能,只需要把生成图表的代码改成:
fig = px.bar(df, y="x", x="y", text='y', color='z', barmode='stack', facet_col='your_facet_column')

然后同样的遍历trace的代码依然能正确隐藏T2的标注。

  • 不需要额外复杂的数据预处理,只是对生成后的图表对象做简单修改,逻辑清晰易懂,后续维护也方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 18:39:04