Plotly堆叠柱状图中自定义textposition失效问题求助
Plotly堆叠柱状图自定义textposition不生效的解决方案
问题原因
在barmode="stack"模式下,Plotly会将color参数指定的每个类别拆分为独立的trace(轨迹)。你原代码中直接通过update_traces(textposition=txt_position)将全局生成的位置列表应用到所有trace,会导致每个trace重复使用完整列表,而非对应自身数据点的位置,因此自定义的textposition无法按预期生效。而barmode="group"模式下每个分类仅对应一个trace,所以列表能正确匹配每个数据点。
修复方案
遍历每个trace,针对其自身的x数据(水平柱状图的数值轴)生成专属的textposition列表,单独设置每个trace的文本位置:
import plotly.express as px # 初始化柱状图 fig = px.bar(pie_bar_gp, x='columnx', y='columny', title='', orientation='h' ,text='columnx', text_auto=",.2f" ,color='columny' ,color_discrete_sequence=px.colors.sequential.Brwnyl ) fig.update_layout(barmode="stack", showlegend=False) # 为每个trace单独设置textposition for trace in fig.data: # 根据当前trace的x值生成对应位置列表 trace_text_pos = ['outside' if x <= 2000000 else 'inside' for x in trace.x] trace.update(textposition=trace_text_pos, textangle=0) fig.show()
补充说明
- 分组模式图表尺寸更小是因为该模式下每个分类下的多个柱子并排排列,会自动压缩单个柱子的宽度;而堆叠模式下每个分类仅展示一个堆叠后的柱子,宽度更宽,视觉上尺寸更大。
内容的提问来源于stack exchange,提问作者beginofwork
相关产品推荐
相关产品推荐

