Matplotlib 阶梯图

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()

运行之后,效果如下图所示。

Matplotlib绘制阶梯图

示例 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()

运行之后,效果如下图所示。

Matplotlib 阶梯图的跳跃位置

分析:

通过结合散点图(黑色的点),小伙伴们可以非常清晰地看出:'pre' 是先向上/下走再平移,'post' 是先平移再向上/下走,而 'mid' 则是走到两个点的正中间时再发生阶梯跳跃。

在实际的数据分析中,我们可以根据业务的实际意义来选择合适的 where 参数。

Matplotlib 阶梯图案例

在当前项目下的 data 文件夹中有一个 gaokao.csv 文件,项目结构如下图所示。其中,gaokao.csv 文件保存的 2011 ~ 2020 这十年每一年的高考人数(单位:万人),内容如下图所示。

Matplotlib阶梯图的项目结构

gaokao.csv中的数据

示例 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()

运行之后,效果如下图所示。

Matplotlib阶梯图的实际应用

分析:

当然了,我们还可以给阶梯图定义颜色以及宽度。修改后的代码如下,再次运行后的效果如下图所示。

plt.step(df['年份'], df['人数'], color='orangered', linewidth=2)

Matplotlib阶梯图修改后的效果

上一篇: Matplotlib 箱线图

下一篇: Matplotlib 面积图

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号