#不用任何库,自己构造一个函数,调用这个函数绘制漏斗图,漏斗图中的数据为字典形式,既要有标签也要有对应数字
时间: 2024-10-08 16:03:54 浏览: 21
要在Python中没有使用外部库的情况下自定义一个函数来绘制漏斗图,可以使用matplotlib库,因为它提供了一个基本的条形图功能,通过适当的处理可以转换为漏斗效果。以下是一个简单的示例:
```python
import matplotlib.pyplot as plt
def draw_pyramid(data_dict):
labels = list(data_dict.keys()) # 漏斗图的各个部分标签
values = data_dict.values() # 对应的数值
# 确保数值从大到小排列,形成漏斗形状
sorted_data = dict(sorted(zip(labels, values), key=lambda x: x[1], reverse=True))
# 创建图形
fig, ax = plt.subplots()
# 使用barh函数创建水平条形图,宽度表示值大小
for i, (label, value) in enumerate(sorted_data.items()):
width = value / sum(values)
ax.barh(i, width, left=0, height=0.8, label=label, color='skyblue')
# 设置x轴范围为0-1,移除网格线,调整轴标签
ax.set_xlim(0, 1)
ax.yaxis.grid(False)
ax.set_xlabel('比例')
ax.set_ylabel('部分')
ax.set_title('漏斗图')
# 添加数据标签
for y_pos, val in enumerate(sorted_data.values()):
ax.text(val + 0.01, y_pos - 0.4, str(int(val)), va="center", ha="left")
# 显示图例并显示图表
ax.legend(loc="upper right")
plt.show()
# 示例数据
data_dict = {"阶段A": 50, "阶段B": 30, "阶段C": 10, "阶段D": 5}
draw_pyramid(data_dict)
```
阅读全文