可视化神器Plotly玩转漏斗图
本文中详细介绍的是如何利用plotly来绘制漏斗图,前面的3篇文章是
认识漏斗图
漏斗图是销售领域一种十分常用的图表,主要是用来分析在各个阶段的流失和转化情况。比如在某个商城中,我们统计用户在不同阶段的人数来分析转化率:
- 商城UV:商城每天的访问人数
- 搜索人数:在商城有过搜索行为的用户数
- 加购人数:有加购行为的用户数
- 提交订单:有多少用户提交订单
- 点击支付:提交订单之后有多少用户点击支付按钮
- 支付成功:最终支付成功的用户数
从搜索人数开始到支付成功,每个阶段用户都存在一定的流失,漏斗图就能很好地将这种流失和转化情况显示出来。
除去柱状图、饼图、折线图,漏斗图应该是自己在工作画的最为频繁的一种图表。下面我们通过模拟某个电商网站的用户行为来绘制漏斗图。
整体效果
导入库
基于两种方式实现:
- plotly_express :px
- plotly.graph_objects:go
1 | import pandas as pd |
基于px实现
基础漏斗图
模拟一份商城数据:
1 | data1 = pd.DataFrame({ |
绘制一个基础漏斗图:
1 | # 绘图 |
我们还可以加上一个颜色参数color:
1 | # 加上颜色参数color |
如果我们的颜色设置成number列,用数值意义似乎不准确,更好地应该是不同的阶段表示,换成stage:
1 | # 加上颜色参数color |
看生成的漏斗图:最上面的是支付成功,通常我们希望的是数值最大的在最上面,于是我们将传入的数据翻转一下:
1 | # 加上颜色参数color |
分组漏斗
分组漏斗表示的含义将不同组别的漏斗图放在一个画布中,比如:看今年3月和2020年3月的数据对比情况,这叫做同比
同比:相同时期的对比,比如:2021年3月和2020年3月
环比:相邻时期的对比,比如:2021年3月和2021年2月
1、2020年3月份数据
2、2021年3月份数据
3、使用concat函数合并两组数据
4、绘制漏斗图
1 | # 绘图 |
绘制面积漏斗图
还是使用最上面的数据:
1 | fig = px.funnel_area( |
我们观察到:面积漏斗图默认绘制的百分比,而普通漏斗图是数值
基于go实现
绘制基础漏斗图
1 | from plotly import graph_objects as go |
改变漏斗图的颜色和边框
1 | from plotly import graph_objects as go |
我们需要主题textinfo参数的使用,它有3种使用方式:
- percent initial:相对于初始值
- percent previous:相对于前一个值
- percent total:相对于整体数值
上面这个漏斗图使用的是percent initial(相对于初始值),百分比是这样来的:
1 | 1000/1000 = 100% |
如果是percent previous:
1 | 1000/1000 = 100% |
如果是percent total:
我们看看第一个百分比是如何计算的:
分组漏斗
1 | from plotly import graph_objects as go |
在上面的图中,既可以观察到同比情况(2020年3月和2021年3月),也可以观察到环比情况(2021年3月和2月)
面积漏斗
1 | from plotly import graph_objects as go |
设置面积漏斗的颜色和边框
1 | from plotly import graph_objects as go |
多组面积漏斗
不同组别的漏斗图我们也可以分开放,将它们放在一个大的画布中:
1 | from plotly import graph_objects as go |