漏斗圖常用於使用者行為的轉化率分析,例如通過漏斗圖來分析使用者購買流程中各個環節的轉化率。當然在整個分析過程當中,我們會把流程優化前後的漏斗圖放在一起,進行比較分析,得出相關的結論,今天小編就用「matplotlib」、「plotly」以及「pyecharts」這幾個模組來為大家演示一下怎麼畫出好看的漏斗圖首先我們先要匯入需要用到的模組以及資料,
import matplotlib.pyplot as plt
import pandas as pd
df = pd.dataframe()
需要用到的資料如下圖所示:
用matplotlib來製作漏斗圖,製作出來的效果可能會稍顯簡單與粗糙,製作的原理也比較簡單,先繪製出水平方向的直方圖,然後利用plot.barh()當中的「left」引數將直方圖向左移,便能出來類似於漏斗圖的模樣
y = [5,4,3,2,1]
x = [85,75,58,43,23]
x_max = 100
x_min = 0
for idx, val in enumerate(x):
plt.barh(y[idx], x[idx], left = idx+5)
plt.xlim(x_min, x_max)
而要繪製出我們想要的想要的漏斗圖的模樣,**示例如下
from matplotlib import font_manager as fm
# funnel chart
y = [5,4,3,2,1]
labels = df["環節"].tolist()
x df["人數"].tolist()
x_range = 100
font = fm.fontproperties(fname="kaiti.ttf")
fig, ax = plt.subplots(1, figsize=(12,6))
for idx, val in enumerate(x):
left = (x_range - val)/2
plt.barh(y[idx], x[idx], left = left, color='#808b96', height=.8, edgecolor='black')
# label
plt.text(50, y[idx]+0.1, labels[idx], ha='center',
fontproperties=font, fontsize=16, color='#2a2a2a')
# value
plt.text(50, y[idx]-0.3, x[idx], ha='center',
fontproperties=font, fontsize=16, color='#2a2a2a')
if idx != len(x)-1:
next_left = (x_range - x[idx+1])/2
shadow_x = [left, next_left,
100-next_left, 100-left, left]
shadow_y = [y[idx]-0.4, y[idx+1]+0.4,
y[idx+1]+0.4, y[idx]-0.4, y[idx]-0.4]
plt.plot(shadow_x, shadow_y)
plt.xlim(x_min, x_max)
plt.axis('off')
plt.title('每個環節的流失率', fontproperties=font, loc='center', fontsize=24, color='#2a2a2a')
plt.show()
繪製出來的漏斗圖如下圖所示
當然我們用plotly來繪製的話則會更加的簡單一些,**示例如下
import plotly.express as px
data = dict(values=[80,73,58,42,23],
qvzfbg labels=['環節一', '環節二', '環節三', '環節四', '環節五'])
fig = px.funnel(data, y='labels', x='values')
fig.show()
最後我們用pyecharts模組來繪製一下,當中有專門用來繪製「漏斗圖」的方法,我們只需要呼叫即可
from pyecharts.charts import funnel
from pyecharts import options as opts
from pyecharts.globals import themetype
c = (
funnel(init_opts=opts.initopts(width="900px", height="600px",theme = themetype.infographic ))
.add(
"環節",
df[["環節","總體轉化率"]].values,
sort_="descending",
label_opts=opts.labelopts(position="inside"),
)程式設計客棧
.set_global_opts(title_opts=opts.titleopts(title="pyecharts漏斗圖", pos_bottom = "90%", pos_left = "center"))
) c.render_notebook()
我們將資料標註上去之後
c = (
funnel(init_opts=opts.initopts(width="900px", height="600px",theme = themetype.infographic ))
.add(
"商品",
df[["環節","總體轉化率"]].values,
sort_="descending",
label_opts=opts.labelopts(pqvzfbgosition="inside"),
) .set_global_opts(title_opts=opts.titleopts(title="pyecharts漏斗圖", pos_bottom = "90%", pos_left = "center"))
.set_serwww.cppcns.comies_opts(label_opts=opts.labelopts(formatter=":"))
) c.render_notebook()
Python 資料視覺化
資料視覺化指的是通過視覺化表示來探索資料,它與資料探勘緊緊相關,而資料探勘指的是使用 來探索資料集的規律和關聯。資料集可以是用一行 就能表示的小型數字列表,也可以是數以吉位元組的資料。漂亮地呈現資料關乎的並非僅僅是漂亮的。以引人注目的簡潔方式呈現資料,讓人能夠明白其含義,發現資料集中原本未意識到的規...
華存資料視覺化 如何看待資料視覺化?
現如今,資料視覺化是乙個備受關注的事物,很多人在自己的工作中都會使用到資料視覺化這一工具去展示資料,資料視覺化在各個領域中都有重要的應用,由此可見資料視覺化是乙個十分重要的技術。那麼我們應該如何看待資料視覺化這個技術呢?下面我們就給大家介紹一下資料視覺化的相關知識。其實我們可以這樣認為,資料視覺化降...
如何看待資料視覺化?
現如今,資料視覺化是乙個備受關注的事物,很多人在自己的工作中都會使用到資料視覺化這一工具去展示資料,資料視覺化在各個領域中都有重要的應用,由此可見資料視覺化是乙個十分重要的技術。那麼我們應該如何看待資料視覺化這個技術呢?下面我們就給大家介紹一下資料視覺化的相關知識。其實我們可以這樣認為,資料視覺化降...