pyecharts-13-绘制漏斗图

Pyecharts-13-漏斗图

漏斗图在电商领域中观察用户转化率的情形使用非常普遍,本文通过一个模拟的商城用户行为的例子来绘制漏斗图

什么是漏斗图

漏斗图又叫倒三角图,漏斗图将数据呈现为几个阶段,每个阶段的数据都是整体的一部分,从一个阶段到另一个阶段数据自上而下逐渐下降,所有阶段的占比总计100%。

与饼图一样,漏斗图呈现的也不是具体的数据,而是该数据相对于总数的占比,同时漏斗图不需要使用任何数据轴。

漏斗图不是表示各个分类的占比情况,而是展示数据变化的一个逻辑流程,如果数据是无逻辑顺序的占比比较,建议使用饼图更合适。

绘图

导入库
代码语言:javascript
复制
from pyecharts.globals import CurrentConfig, OnlineHostType   # 事先导入,防止不出图
from pyecharts import options as opts
from pyecharts.charts import Funnel  # 涟漪散点图+日历图
from pyecharts.faker import Faker
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeType
from pyecharts.globals import SymbolType

import pandas as pd
import numpy as np

模拟数据

下面的数据是自行模拟的,仅供学习使用。

代码语言:javascript
复制
# 假设某个网站上商品的用户操作行为数据

data = {'操作':["访问","浏览","点击商品","加入购物车","点击支付","支付成功"],
'人数':[1000, 800, 600, 300, 240, 80]
}

df = pd.DataFrame(data)
df

基本绘图
代码语言:javascript
复制
c = (
Funnel()
.add("商城漏斗", [list(z) for z in zip(df['操作'].tolist(), df['人数'].tolist())])
.set_global_opts(title_opts=opts.TitleOpts(title="商城用户漏斗分析"))
)

c.render_notebook()

改变label位置
代码语言:javascript
复制
# data = [[df['操作'].tolist()[i], df['人数'].tolist()[i]] for i in range(len(df))]

data = [list(z) for z in zip(df['操作'].tolist(), df['人数'].tolist())]

c = (
Funnel(init_opts=opts.InitOpts(width="1000px", height="600px"))
.add(
series_name="",
data_pair=data,
gap=2,
tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b} : {c}%"),
label_opts=opts.LabelOpts(is_show=True, position="inside"), # label是否显示和位置
itemstyle_opts=opts.ItemStyleOpts(border_color="#faf", border_width=1),
)
.set_global_opts(title_opts=opts.TitleOpts(title="漏斗图", subtitle="商城用户行为"))
)

c.render_notebook()

倒序漏斗
代码语言:javascript
复制
c = (
Funnel()
.add("商城漏斗",
[list(z) for z in zip(df['操作'].tolist(), df['人数'].tolist())],
sort_="ascending",
label_opts=opts.LabelOpts(is_show=True, position="inside"),
)
.set_global_opts(title_opts=opts.TitleOpts(title="商城用户漏斗分析"))
)

c.render_notebook()