Matplotlib 阶梯图函数
阶梯图,是一种类似于折线图的图表,它也是用于反映数据的趋势变化。在实际开发中,阶梯图更多是用于展示时序数据的波动周期或波动规律。
在 Matplotlib 中,我们可以使用 step() 函数来绘制一个阶梯图。
语法:
plt.step(x, y, where)说明:
参数 x 存放的是所有点的 x 轴坐标,参数 y 存放的是所有点的 y 轴坐标,它们可以是列表、数组、Series 等。
参数 where 用于控制阶梯(也就是垂直线)在哪个位置发生跳跃。其中,where 参数有 3 个可选值:
'pre'(默认值):在 x 轴区间的 “开头” 发生阶梯跳跃。'post':在 x 轴区间的 “结尾” 发生阶梯跳跃。'mid':在 x 轴区间的 “中间” 发生阶梯跳跃。
示例 1:Matplotlib 绘制阶梯图
import matplotlib.pyplot as plt
# 绘制
x = [2016, 2017, 2018, 2019, 2020]
y = [74, 124, 156, 198, 226]
plt.step(x, y)
# 显示
plt.show()运行之后,效果如下图所示。

示例 2:Matplotlib 阶梯图的跳跃位置
import matplotlib.pyplot as plt
# 设置
plt.rcParams['font.family'] = ['SimHei', 'PingFang SC']
plt.rcParams['axes.unicode_minus'] = False
# 绘制数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 3, 5, 4]
# 绘制三种不同跳跃位置的阶梯图
plt.step(x, y, where='pre', label='pre (默认)', color='red')
plt.step(x, y, where='post', label='post', color='blue')
plt.step(x, y, where='mid', label='mid', color='green')
# 把原始的数据点用散点图标记出来,方便观察
plt.scatter(x, y, color='black', zorder=5)
# 定义图例和标题
plt.legend()
plt.title('阶梯图 where 参数对比')
# 显示
plt.show()运行之后,效果如下图所示。

分析:
通过结合散点图(黑色的点),小伙伴们可以非常清晰地看出:'pre' 是先向上/下走再平移,'post' 是先平移再向上/下走,而 'mid' 则是走到两个点的正中间时再发生阶梯跳跃。
在实际的数据分析中,我们可以根据业务的实际意义来选择合适的 where 参数。
Matplotlib 阶梯图案例
在当前项目下的 data 文件夹中有一个 gaokao.csv 文件,项目结构如下图所示。其中,gaokao.csv 文件保存的 2011 ~ 2020 这十年每一年的高考人数(单位:万人),内容如下图所示。


示例 3:Matplotlib 阶梯图的应用
import pandas as pd
import matplotlib.pyplot as plt
# 设置
plt.rcParams['font.family'] = ['SimHei', 'PingFang SC']
plt.rcParams['axes.unicode_minus'] = False
# 读取数据
df = pd.read_csv('data/gaokao.csv')
# 绘制图表
plt.step(df['年份'], df['人数'])
# 定义标题
plt.title('2011-2020年高考人数')
plt.xlabel('年份', loc='right')
plt.ylabel('人数(万人)', loc='top')
# 刻度标签
plt.xticks(range(2011, 2021))
# 显示
plt.show()运行之后,效果如下图所示。

分析:
当然了,我们还可以给阶梯图定义颜色以及宽度。修改后的代码如下,再次运行后的效果如下图所示。
plt.step(df['年份'], df['人数'], color='orangered', linewidth=2)
