Python桑基图:展示数据流转关系

2026-08-25 12:00:38 607阅读 0评论

别再用干瘪的饼图了!用Python画桑基图,让数据流转“活”起来

做数据分析汇报时,咱们经常会遇到这样的头疼场景:想展示用户从注册到购买的流失路径,或者公司各部门的资金流向。用饼图吧,只能看个静态比例;用柱状图吧,又体现不出前后的承接关系。这时候,桑基图(Sankey Diagram)就该登场了。

桑基图就像是城市早晚高峰的地铁换乘路线图,线条的粗细代表流量的大小,线条的走向代表数据的流转。它不仅能让你看清“有多少”,更能直观展示“从哪来、到哪去、在哪分叉”。

搞懂了概念,咱们直接拿一个真实的业务场景来上手实战。假设我们要分析某电商平台的用户行为路径,看看用户从“首页”进入后,最终是完成了“购买”,还是在“购物车”、“详情页”等环节流失了。

在Python中,绘制交互式桑基图最顺手的工具是 pyecharts。它底层基于Echarts,生成的图表不仅颜值高,还支持鼠标悬停查看具体数值。

安装第三方库是第一步,打开终端运行 pip install pyecharts 即可。

接下来是核心环节,很多新手会在这里卡壳。桑基图的数据结构不像折线图那样直接扔个DataFrame进去就行,它需要严格区分节点(Nodes)连线(Links)

构建节点数据(Nodes),其实就是把数据流转中涉及的所有“站点”提取出来,去重后变成一个字典列表。

nodes = [{'name': '首页'}, {'name': '详情页'}, {'name': '购物车'}, {'name': '购买'}, {'name': '流失'}]

构建连线数据(Links),则是定义节点之间的流向和流量大小。这里的 source 是起点,target 是终点,value 是流转的用户量。

links = [
    {'source': '首页', 'target': '详情页', 'value': 800},
    {'source': '首页', 'target': '流失', 'value': 200},
    {'source': '详情页', 'target': '购物车', 'value': 500},
    {'source': '详情页', 'target': '流失', 'value': 300},
    {'source': '购物车', 'target': '购买', 'value': 350},
    {'source': '购物车', 'target': '流失', 'value': 150}
]

数据理顺后,就是渲染并输出图表。通过 Sankey() 类将数据喂进去,稍微调整一下配色和提示框,一张专业的业务流转图就生成了。

from pyecharts import options as opts
from pyecharts.charts import Sankey

sankey = (
    Sankey()
    .add(
        "",
        nodes,
        links,
        linestyle_opt=opts.LineStyleOpts(opacity=0.3, curve=0.5, color="source"),
        label_opts=opts.LabelOpts(position="right"),
    )
    .set_global_opts(title_opts=opts.TitleOpts(title="电商用户行为流转图"))
    .render("user_flow.html")
)

图表画出来了,但想在实际项目中做得漂亮且专业,还得注意几个容易踩坑的细节。

节点名称必须绝对一致。在构建Links时,sourcetarget 里的字符串必须和Nodes里的名称一模一样,连一个多余的空格都不能有。否则图表会直接报错或者出现断线,排查起来非常折磨人。建议在处理数据时,提前用 strip() 清洗一下字符串。

克制节点数量。桑基图虽然强大,但如果节点和连线太多,图表就会变成一团乱麻的“蜘蛛网”,完全失去可读性。遇到复杂的业务场景,建议合并同类项,或者只提取流量占比 Top 80% 的核心路径进行展示,把长尾数据折叠成一个“其他”节点。

巧用颜色映射。默认情况下,桑基图的连线颜色是跟随源节点的。如果业务上需要强调“流失”这种负面路径,可以通过自定义 itemstyle_opts,把流向“流失”节点的线条统一设置为灰色或警示色,让汇报时的视觉焦点更集中。

数据可视化的本质不是为了炫技,而是为了降低沟通成本。当你下次再面对复杂的转化漏斗或资源分配问题时,不妨放下干瘪的饼图,用桑基图让数据的流转真正“活”起来。理清了数据的来龙去脉,业务优化的方向自然也就浮出水面了。

文章版权声明:除非注明,否则均为Dark零点博客原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
验证码
评论列表 (暂无评论,607人围观)

还没有评论,来说两句吧...

目录[+]