图表选择可视化指南:桑基图:看流量与转化(深度版)
用带宽度 flows 展示能量/物料/用户在阶段或类别间的流转与损耗,适合拆解『从哪来、到哪去』。
分类:🕸 结构图 适用:能耗/物料平衡、用户转化漏斗、资金/人口流动
一、这个图适合谁(适用场景)
- 能耗/物料平衡
- 用户转化漏斗
- 资金/人口流动
二、图表结构要素
- 节点=阶段/类别
- 连线宽度=流量
- 可多层
三、可视化的底层逻辑
桑基图用"带宽度连线"编码流量在阶段/类别间的流转,把"从哪来、到哪去、损耗多少"这一守恒过程变成一目了然的视觉叙事。它的核心契约是流量守恒:每一层节点的流入总量必须等于流出总量(稳态),连线宽度严格正比于流量,否则图形自相矛盾、读者被骗。相比静态的饼图/堆叠柱状,桑基图擅长表达"动态流转"——能耗如何在设备间分配、用户如何在步骤间转化流失、资金如何在账户间流动。但层级越多,分支呈指数增长、视觉负担越重,故层级宜≤4。核心思想:用宽度=流量的视觉隐喻表达守恒,且每层都必须满足进出平衡。
四、视觉编码与感知推导
流量守恒(硬约束):对节点 ,流入=流出(稳态):
任意违反(流入≠流出)都意味着"凭空生灭"或"无端消失",图即不可信。绘制前须做守恒校验。
宽度-流量线性映射:连线视觉宽度
保证"面积比例=流量比例",读者对宽度的感知直接对应真实流量比(宽度属长度通道,精度高)。标注关键 数值补强精确性。
层级与读负担:设每层平均分支数 、层数 ,末端节点数约 。 每加 1 视觉元素指数增,故限制 ;超过时折叠中间层或只画"总流入-总流出-关键支路"。
损耗率:节点 的流失
量化"在这一步丢了多少",是桑基图最该被读出的结论性数字(如转化漏斗的流失率)。
五、怎么画(步骤)
- 明确『流』是什么(能量/人/钱)及单位。
- 每层节点不重复、流量守恒(进出相等)。
- 用颜色区分来源或类别。
- 标注关键流量数值。
- 层级不宜过多(≤4 层)保持可读。
六、何时用 / 何时不用 / 常见丑图
- 何时用:『流转、转化、守恒』类问题。
- 何时不用:静态占比 → 饼/堆叠柱状。
- 常见丑图:流量不守恒、层级过多、无数值。
七、常见坑
- 流量不守恒
- 层级过多乱
- 不标数值
八、画图自检清单
- 流定义清晰
- 守恒校验
- 层级适中
- 关键流量有标注
九、配套资源与搭配
- 网络/图结构问题怎么选
- Python 数据可视化模板
- 论文图表规范与排版
本指南由 MCM520 资料站自动生成(深度版),配套论文图表规范与可视化模板可在资源页下载。
十、实战案例——Python 绘制 + 图效果
桑基图用带宽度 flows 展示阶段间的流量与损耗,最适合拆解「从哪来、到哪去」。
案例场景:某知识点网站的用户访问路径——访问→浏览攻略→看范文→填写反馈。
宽度越大流量越大,从 10000 人访问到 850 人反馈,转化率 8.5%。
完整代码(Python + matplotlib)
import plotly.graph_objects as go
fig = go.Figure(data=[go.Sankey(
node=dict(
label=['访问', '浏览攻略', '看范文', '填写反馈'],
color=['#2563eb', '#16a34a', '#f59e0b', '#dc2626'],
),
link=dict(
source=[0, 0, 0, 1, 1, 2],
target=[1, 2, 3, 2, 3, 3],
value=[4200, 3100, 850, 2800, 1200, 850]
))])
fig.update_layout(title='用户访问转化漏斗', font_size=12)
fig.show()
运行效果图
本指南由 MCM520 资料站生成,配套 Python 代码可直接运行。