当前位置:首页 > 热点

漏斗图表怎么做

漏斗图表的漏斗核心就一件事:把一组递减的数据画成上宽下窄的梯形堆叠。听起来简单,图表但真正动手做的漏斗时候,坑比想象的图表多。

我最早接触漏斗图是漏斗因为一个电商项目。运营那边给了一张Excel表,图表五个阶段:访问商品页、漏斗加入购物车、图表提交订单、漏斗完成支付、图表确认收货。漏斗数字分别是图表12000、4800、漏斗2100、图表1600、漏斗1400。他们想看的是一张能直观反映流失的图。我一开始用柱状图交差,被退回来了——"看不出漏斗的感觉"。

用Excel做:最笨但最通用的办法

Excel没有内置漏斗图。2016版之后有了"漏斗图"这个图表类型,但说实话,默认效果很丑,颜色单一,间距也怪。更可控的方式是用堆积条形图来模拟。

具体操作:把数据横过来放,每个阶段一行,加一列辅助数据。辅助列的公式是=(最大值-当前值)/2。然后插入堆积条形图,辅助列设为无填充,剩下的那部分就是漏斗的梯形。再把纵坐标轴逆序,阶段名称就从上到下排列了。这个方法麻烦在辅助列要手算,但胜在完全可控,颜色、间距、标签都能自己调。

如果你用的是Excel 2016以上版本,直接插入漏斗图也能用。右键设置数据系列格式,把"漏斗图区宽度"调到50%左右,间隙宽度调到0%,看起来就紧凑了。但它的局限是没法做多组对比,比如不同渠道的转化漏斗放在一张图里,Excel原生漏斗图做不到。

Python方案:数据量大时的必然选择

数据超过几百行,或者需要批量出图,Excel就力不从心了。Python里最顺手的是Plotly,一行go.Funnel()就能出图,而且自带悬停提示和动画。

import plotly.graph_objects as go fig = go.Figure(go.Funnel( y = ["访问", "加购", "提交", "支付", "收货"], x = [12000, 4800, 2100, 1600, 1400], textinfo = "value+percent initial" )) fig.show()

Plotly的好处是交互性强,鼠标放上去能看到具体数值和相对首阶段的转化率。缺点是默认配色偏暗,得手动改。我一般会把颜色设成从深蓝到浅蓝的渐变,视觉上更符合"漏斗"的直觉。

Matplotlib也能画,但需要自己算梯形的四个顶点坐标,用fill()函数逐层绘制。代码量大概是Plotly的三倍,除非项目强制要求用Matplotlib,否则没必要自找麻烦。

几个容易踩的坑

第一个坑:阶段之间的比例差异太大。比如访问量100万,最终支付只有200,漏斗底部几乎看不见。这时候要么用对数刻度,要么把底部几个阶段合并展示。对数刻度能保留全貌,但会扭曲视觉比例,观众容易误读。

第二个坑:颜色太多。有人喜欢每个阶段一个颜色,结果图看起来像彩虹糖。漏斗图的重点是"递减"这个趋势,颜色应该服务于这个趋势。单色渐变是最安全的方案,从深到浅或者从浅到深都行。

第三个坑:忘了标注转化率。光看绝对数字,观众得自己心算。在每个阶段旁边加上"占首阶段百分比"和"环比上一阶段百分比",信息密度立刻上来了。Plotly的textinfo参数支持"percent initial"和"percent previous",直接勾选就行。

最后说一个个人判断:漏斗图适合阶段数在4到7个之间的场景。少于4个,用柱状图更清晰;多于7个,漏斗会变得又长又窄,阅读体验很差。我见过有人把用户注册流程拆成12步画漏斗,那张图基本没法看。该合并的步骤就合并,别为了"完整"牺牲可读性。

分享到: