可视化之瀑布图的绘制--基于matplotlib库

可视化之瀑布图的绘制--基于matplotlib库第一步:前期准备-导入数据第二步:打好基础1-画出堆叠柱形图的样子第三步:打好基础2-并排柱形图第四步:瀑布图成形第五步:瀑布图优化1-柱体上加数字标注第六步:瀑布图优化2-设置x轴刻度写在前面:近日学习matplotlib库时,可以自己绘制柱状图,条形图,堆叠条形图,并列条形图等等;对于瀑布图,算是一个练习,我们基于matplotlib.py...
摘要由CSDN通过智能技术生成

写在前面:近日学习matplotlib库时,可以自己绘制柱状图,条形图,堆叠条形图,并列条形图等等;对于瀑布图,算是一个练习,我们基于matplotlib.pyplot中的bar()函数来绘制我们的瀑布图吧。

代码重难点提示:

  1. 颜色设置与图例的添加
  2. 柱体上数字的添加
  3. 横坐标刻度的定义与旋转

编译器:jupyter notebook

首先来看一下我们需要绘制出来的瀑布图长什么样子吧。
在这里插入图片描述

第一步:前期准备-导入数据

导入我们需要使用的包以及数据;我们这里用到的数据是随便写的一个fake data。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"]    # 识别汉字
mpl.rcParams['axes.unicode_minus'] = False      # 识别负号

data = pd.read_excel("fakedata.xlsx")
data
	month	day			money
0	11		1			900
1	11		2			345
2	11		3			393
3	11		4			-100
4	11		5			-154
5	11		6			135
6	11		7			178
7	11		8			286
8	11		9			-119
9	11		10			-361
10	11		11			-203

第二步:打好基础1-画出堆叠柱形图的样子

因为我们需要画的是一个瀑布图,观察瀑布图的样子可以发现,瀑布图的每一个小柱体,除了第一个柱子之外,都是以前一个柱子的末尾为当前柱子的起点,所以我们可以先画出堆叠柱形图的模样。

money = data['money']

# 首先画出堆叠柱形图的样子,多用几个plt.bar(),设置好bottle就可以了,画出来应该有11根柱子
bottom1 = 0
bar_width=0.8

x = np.arange(len(money))
for i in money.index:
    y = money[i]
    plt.bar(x, y,  bar_width, align='center', bottom=bottom1)
    bottom1 += y

plt.legend()
plt.title("瀑布图")
plt.xlabel('time')
plt.ylabel('money')

得到下面的图形
在这里插入图片描述

第三步:打好基础2-并排柱形图

在上一步中,我们画出了堆叠柱形图,我们得到了11个完全一模一样的柱子,并且是堆叠起来的。再次观察我们的瀑布图,可以看到,瀑布图的柱子并不是堆积在一起的,而是每个x轴的刻度对应一个柱子,所以我们可以利用并排柱形图的思想咯。

# 对上面的代码进行改进,让他显示出一点并排柱状图的样子;事实上,这时候我们已经有了瀑布图的样子了
bottom1 = 0
bar_width=0.8

x_idx = np.arange(len(money), dtype=np.float64)      # 这里要将x_idx的类型定义一下,否则下面不能进行加的操作

for i in money.index:
    x = x_idx[i]
    y = money[i]
    plt.bar(x, y,  bar_width, align='center', bottom=bottom1)
    bottom1 += y
    x += 0.8

plt.legend()
plt.title("瀑布图")
plt.xlabel('time')
plt.ylabel('money')

结果展示
在这里插入图片描述

第四步:瀑布图成形

经过前面几步的准备工作,我们可以看到&

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值