如何在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
相关产品推荐
相关产品推荐

