如何用Python绘制带分支的漏斗图?Plotly实现遇阻求助
实现分支式漏斗图的解决方案
你的问题在于原代码使用了相同的y轴分类,导致所有漏斗轨迹重叠,无法体现分支逻辑。Plotly的基础Funnel组件需要通过分层的y轴标签和合理的轨迹配置来实现分支漏斗效果。
以下是修正后的代码,能够清晰展示从患者总数到治疗决策,再到治疗结果的分支流程:
from plotly import graph_objects as go fig = go.Figure() # 第一层:总患者数 fig.add_trace(go.Funnel( name='总患者', orientation='h', y=['总患者'], x=[100], textinfo='value', marker_color='#636EFA' )) # 第二层:治疗决策分支 fig.add_trace(go.Funnel( name='接受治疗', orientation='h', y=['治疗决策', '接受治疗'], x=[100, 50], textinfo='value+percent initial', marker_color='#EF553B' )) fig.add_trace(go.Funnel( name='未接受治疗', orientation='h', y=['治疗决策', '未接受治疗'], x=[100, 50], textinfo='value+percent initial', marker_color='#00CC96' )) # 第三层:治疗结果分支 fig.add_trace(go.Funnel( name='病情缓解', orientation='h', y=['接受治疗', '病情缓解'], x=[50, 49], textinfo='value+percent previous', marker_color='#AB63FA' )) fig.add_trace(go.Funnel( name='未缓解', orientation='h', y=['接受治疗', '未缓解'], x=[50, 1], textinfo='value+percent previous', marker_color='#FFA15A' )) # 调整布局 fig.update_layout( title='癌症患者治疗流程分支漏斗图', funnelmode='stack', showlegend=True ) fig.show()
代码说明:
- 使用分层的y轴标签(如
['治疗决策', '接受治疗'])来连接不同阶段的漏斗分支。 - 通过
funnelmode='stack'确保分支轨迹在同一水平层上正确排列。 - 每个分支使用不同的颜色区分,提升可读性。
- 配置
textinfo显示对应阶段的数值和占比(初始值或前一阶段的占比)。
这样就能直观展示100名患者→50人接受治疗/50人未接受→49人缓解/1人未缓解的完整分支流程。
内容的提问来源于stack exchange,提问作者user21585314
相关产品推荐
相关产品推荐

