Plotly Express冰柱图自定义排序与混合状态默认颜色调整问题
Plotly Express 冰柱图问题解决方案
问题1:季度未按自然顺序排列
px.icicle 默认按照每个分类下的数值总和降序排序,Q2下有2条数据总数值更高,所以会排在Q1前面。你可以直接在绘图参数中添加category_orders指定季度排序规则,无需修改原数据集。
问题2:多状态父节点默认显示紫色
父节点包含多种Status取值时,不属于你配置的color_discrete_map中的任意状态值,会调用Plotly默认离散色板的颜色,也就是你看到的紫色。你可以通过default_color参数指定这类混合状态节点的默认颜色,不会影响原有按Status染色的逻辑。
另外注意你当前代码中color_discrete_map的键为英文,与数据集里中文的Status取值不匹配,会导致颜色规则不生效,需要对应修改。
修复后完整代码:
fig = px.icicle(df, path=['Objective','Quarter','Task','Status'], values='Value', color='Status', # 键要和数据集Status列的实际取值完全匹配 color_discrete_map={'未开始':'red','进行中':'yellow','已完成':'green'}, # 指定季度按自然顺序排列 category_orders={'Quarter': [1,2,3,4]}, # 混合状态节点默认显示浅灰色,替换原有紫色 default_color='lightgray', maxdepth=3 )
内容的提问来源于stack exchange,提问作者meforprez2032
相关产品推荐
相关产品推荐

