Pyecharts-13-漏斗图
漏斗图在电商领域中观察用户转化率的情形使用非常普遍,本文通过一个模拟的商城用户行为的例子来绘制漏斗图
什么是漏斗图
漏斗图又叫倒三角图,漏斗图将数据呈现为几个阶段,每个阶段的数据都是整体的一部分,从一个阶段到另一个阶段数据自上而下逐渐下降,所有阶段的占比总计100%。
与饼图一样,漏斗图呈现的也不是具体的数据,而是该数据相对于总数的占比,同时漏斗图不需要使用任何数据轴。
漏斗图不是表示各个分类的占比情况,而是展示数据变化的一个逻辑流程,如果数据是无逻辑顺序的占比比较,建议使用饼图更合适。
绘图
导入库
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
模拟数据
下面的数据是自行模拟的,仅供学习使用。
# 假设某个网站上商品的用户操作行为数据
data = {'操作':["访问","浏览","点击商品","加入购物车","点击支付","支付成功"],
'人数':[1000, 800, 600, 300, 240, 80]
}
df = pd.DataFrame(data)
df
基本绘图
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位置
# 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()
倒序漏斗
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()