绘制python漏斗图

我们在数据分析的时候,特别是电商数据分析转化率,通常用漏斗图的形式来表示各个阶段的转化率从而分析哪个环节出了问题。这些阶段大多数都是依次降低,所以我们可以更乐意用漏斗图来使得我们的数据更直观。

一般我们都熟知柱状图的绘制,但是要想变成漏斗的形式展示还是需要进行一些操作。

普通水平柱状图的绘制

import matplotlib.pyplot as plt
import pandas as pd
group=pd.DataFrame({'环节':[1,2,3,4,5],'转化率':[1,0.8,0.6,0.4,0.2]})
plt.barh(group['环节'],group['转化率'])

如果想进行逆序排列可以用

plt.gca().invert_yaxis()

漏斗图绘制

我们的漏斗图,是把柱子移到中间,那么我们该怎么样进行操作呢

首先我们来补充一点逻辑概念

如果我们要把70这个柱子移动成中心对称,那么中心点就是50这个值,两边则各是35

此时这根柱子离最左端距离则是50-35=15

要想移动柱子,则是把原来的值变为(中间值+原先的一半)

然后再用背景色的柱子进行表层覆盖,高度为(中间值-原先的一半)

然后我们就开始着手代码的编程

import matplotlib.pyplot as plt
import pandas as pd
group=pd.DataFrame({'环节':[1,2,3,4,5],'转化率':[1,0.8,0.6,0.4,0.2]})
#plt.barh(group['环节'],group['转化率'])
group['text1']=group['转化率'].apply(lambda x:0.5+x/2)          #0.5为中间值
group['text2']=group['转化率'].apply(lambda x:0.5-x/2)
plt.barh(group['环节'],group['text1'])
bars=plt.barh(group['环节'],group['text2'],color='white')         #背景色为白色

for i, bar in enumerate(bars):       #添加数值
    plt.text(0.47, bar.get_y() + bar.get_height() / 2, group['转化率'][i], 
             ha='left', va='center', color='black')
plt.tick_params(axis='x', which='both', bottom=False, top=False, labelbottom=False)    #隐藏x轴标签和刻度线
plt.gca().invert_yaxis()         #逆序排列

group补充后的样子

环节转化率text1text2
011.01.00.0
120.80.90.1
230.60.80.2
340.40.70.3
450.20.60.4

大概就是这样,就不做过多的美化了

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python中可以使用matplotlib库绘制漏斗,具体步骤如下: 1. 安装matplotlib库 在命令行输入以下命令: ``` pip install matplotlib ``` 2. 导入库 在python代码中导入matplotlib库: ```python import matplotlib.pyplot as plt ``` 3. 准备数据 准备漏斗所需的数据,如下所示: ```python data = [100, 80, 60, 40, 20] labels = ['Step 1', 'Step 2', 'Step 3', 'Step 4', 'Step 5'] ``` 其中,`data`表示每个步骤的数量,`labels`表示每个步骤的标签。 4. 绘制漏斗 使用`matplotlib`库的`plot`函数绘制漏斗,代码如下: ```python fig, ax = plt.subplots() ax.set_title('Funnel Chart') ax.set_xlabel('Number of users') ax.barh(range(len(data)), data, align='center', height=0.5, color=['red', 'orange', 'yellow', 'green', 'blue']) ax.set_yticks(range(len(data))) ax.set_yticklabels(labels) plt.show() ``` 通过`barh`函数绘制水平方向的柱状,`range(len(data))`表示x轴坐标,`data`表示y轴坐标,`align='center'`表示对齐方式为居中,`height=0.5`表示每个柱状的高度,`color`表示每个柱状的颜色。 `set_yticks`和`set_yticklabels`函数用于设置y轴的刻度和标签。 `plt.show()`函数用于显示绘制出的漏斗。 完整代码如下: ```python import matplotlib.pyplot as plt data = [100, 80, 60, 40, 20] labels = ['Step 1', 'Step 2', 'Step 3', 'Step 4', 'Step 5'] fig, ax = plt.subplots() ax.set_title('Funnel Chart') ax.set_xlabel('Number of users') ax.barh(range(len(data)), data, align='center', height=0.5, color=['red', 'orange', 'yellow', 'green', 'blue']) ax.set_yticks(range(len(data))) ax.set_yticklabels(labels) plt.show() ``` 运行代码,即可绘制漏斗。 ### 回答2: 绘制漏斗Python数据可视化中的一种常见任务。可以使用多种第三方库来绘制漏斗,包括matplotlib、seaborn和plotly等。 假设我们有一些数据,表示一系列不同阶段的转化率。要绘制漏斗,我们首先需要使用这些数据创建一个数据框。然后,我们可以使用matplotlib库中的pyplot来绘制漏斗。 以下是一个示例代码: ```python import matplotlib.pyplot as plt # 创建数据框 data = {'阶段': ['A', 'B', 'C', 'D'], '转化率': [100, 80, 60, 40]} # 绘制漏斗 plt.figure(figsize=(6, 6)) # 绘制漏斗的每个阶段 plt.barh(data['阶段'], data['转化率']) # 设置标题和标签 plt.title('转化率漏斗') plt.xlabel('转化率') # 设置坐标轴的范围 plt.xlim(0, 100) # 显示形 plt.show() ``` 在上述代码中,我们首先创建了一个包含阶段和转化率的数据框,并导入了matplotlib库中的pyplot。然后,我们使用`plt.figure`创建了一个形画布,并指定了画布的大小。接下来,使用`plt.barh`绘制漏斗的每个阶段。我们还设置了标题、x轴标签和坐标轴的范围,最后调用`plt.show`来显示形。 通过运行上述代码,我们可以得到一个表示转化率漏斗像。漏斗显示了每个阶段的转化率,并以条形的形式进行了可视化,这有助于我们更直观地了解转化率的变化情况。 ### 回答3: Python是一种功能强大的编程语言,它提供了许多库和包用于数据可视化。要绘制漏斗,我们可以使用Python中的matplotlib库。 首先,我们需要安装matplotlib库。可以使用pip命令在命令行中运行以下命令来安装matplotlib: pip install matplotlib 安装完成后,我们可以在Python脚本中导入matplotlib库并开始绘制漏斗。 下面是一个简单的示例代码,演示了如何使用matplotlib绘制漏斗: import matplotlib.pyplot as plt # 数据 labels = ['步骤1', '步骤2', '步骤3', '步骤4'] sizes = [30, 20, 10, 5] # 绘制漏斗 plt.gca().set_aspect('equal') # 防止形变形 plt.pie(sizes, labels=labels, startangle=90, counterclock=False, wedgeprops={'linewidth': 1, 'edgecolor':'k'}) # 添加标题 plt.title("漏斗") # 显示形 plt.show() 这段代码首先定义了一个包含步骤标签和对应占比的数据。然后使用matplotlib的饼函数plt.pie()绘制漏斗。参数startangle表示起始角度,counterclock决定是否逆时针旋转,wedgeprops用于设置漏斗边缘的属性。最后,我们添加了标题,并使用plt.show()显示形。 这只是绘制漏斗的基本代码示例,你可以根据自己的需求进行修改和美化。此外,matplotlib还提供了其他功能和选项供你进一步定制漏斗的样式和效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值