Plotly Python中如何取消条形图默认堆叠实现分开展示
问题原因
仅指定x、y字段映射时,plotly.express默认会对相同x值对应的y值做聚合求和,以单根堆叠条形展示。barmode参数仅对多数据序列的条形图生效,单序列场景下修改该参数无法实现条形拆分效果。
解决方案
要实现同x分类下多根条形独立并排的效果,按以下步骤操作即可:
- 为同一x分类下的每一条记录生成组内唯一ID,用来拆分出独立的条形序列
- 绘图时将该ID传入
color参数,同时设置barmode='group'开启分组并排模式,不需要区分颜色的话可以手动统一所有条形配色,和Excel默认效果对齐。
完整可运行代码
import pandas as pd import numpy as np import plotly.express as px # 构造示例数据 abc = np.random.randint(1,30, 15) df = pd.DataFrame(abc, columns=['v1']) df['v2'] = list('abc'*5) # 生成同x分类下的条形唯一标识 df['bar_seq'] = df.groupby('v2').cumcount() fig = px.bar( df, x='v2', y='v1', color='bar_seq', barmode='group', # 取消下一行注释即可统一所有条形为Excel默认蓝色 # color_discrete_sequence=['#4472C4'] * df['bar_seq'].nunique() ) # 统一配色时可取消下一行注释隐藏冗余图例 # fig.update_layout(showlegend=False) # 按需调整条形间距:bargap为不同x组的间距,bargroupgap为同组内条形间距 # fig.update_layout(bargap=0.3, bargroupgap=0.1) fig.show()
内容的提问来源于stack exchange,提问作者Zaur
相关产品推荐
相关产品推荐

