Plotly Express不同组大小分组柱状图堆叠问题的原因及解决方法
1 推测正确性判断
你的推测不正确。
出现堆叠效果的核心原因是start_time为连续型字段,你将其作为color参数的映射值时,Plotly会将所有数据判定为同一个系列的连续着色,不会生成多个离散的绘图轨迹(trace)。而barmode='group'仅在存在多个离散轨迹时才会生效,和不同teacher对应的样本数量是否均匀没有关联。
2 调整实现并列柱状图的方法
可以通过将color映射的字段转为离散类型,触发生成多个独立轨迹,即可让barmode='group'参数生效,操作逻辑如下:
首先对数据做预处理,新增离散化的着色字段:
# 方法1:将start_time转为字符串类型作为离散着色字段,保留原时间着色逻辑 data['start_time_discrete'] = data['start_time'].astype(str) # 方法2:如果不需要按时间着色,仅需要区分同一个teacher下的多条记录,可新增序列标识 # data['record_seq'] = data.groupby('teacher').cumcount().astype(str)
再修改绘图代码的color映射字段即可:
import plotly.express as px px.bar(data.sort_values("start_time", ascending=False), x="teacher", y="start_time", color="start_time_discrete", # 替换为刚才生成的离散字段 color_continuous_scale="Bluered", barmode="group")
修改后同一个teacher下的多个记录就会以并列样式展示,而非堆叠。
内容的提问来源于stack exchange,提问作者Joris Limonier
相关产品推荐
相关产品推荐

