You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 16:07:41