首页 > 编程笔记 > Python笔记 阅读:2

Matplotlib subplot()函数的用法(附带实例)

Matplotlib 可以实现在一张图上绘制多个子图表。Matplotlib 提供了三种方法,分别是 subplot() 函数、subplots() 函数和 add_subplot() 方法。

subplot() 函数直接指定划分方式和位置,它可以将一个绘图区域划分为 n 个子区域,每个 subplot() 函数只能绘制一个子图。

例如,绘制一个 2×3 的区域,subplot(2, 3, 3) 表示将画布分成 2 行 3 列,在第 3 个区域中绘制图表,用坐标表示如下:
(1,1),(1,2),(1,3)
(2,1),(2,2),(2,3)
如果行列的值都小于 10,那么可以将它们合并写为一个整数,如 subplot(233)。

另外,subplot() 在指定的区域中创建一个轴对象,如果新创建的轴和之前创建的轴重叠,那么之前创建的轴将被删除。

【实例 1】使用 subplot() 函数绘制包含多个子图的空图表。绘制一个 2 行 3 列包含 6 个子图的空图表,程序代码如下:
# 导入matplotlib模块
import matplotlib.pyplot as plt

# 绘制一个2行3列包含6个子图的空图表
plt.subplot(2,3,1)
plt.subplot(2,3,2)
plt.subplot(2,3,3)
plt.subplot(2,3,4)
plt.subplot(2,3,5)
plt.subplot(2,3,6)
plt.show()  # 显示图表
运行程序,结果为:


图 1 包含6个子图的空图表

通过上述示例我们了解了 subplot() 函数的基本用法,接下来将前面所学的简单图表整合到一张图表上,效果如下图所示:


图 2 包含多个子图的图表

程序代码如下:
# 导入matplotlib模块
import matplotlib.pyplot as plt

# 第1个子图-折线图
plt.subplot(2,2,1)
plt.plot([1, 2, 3, 4, 5])

# 第2个子图-散点图
plt.subplot(2,2,2)
plt.plot([1, 2, 3, 4, 5], [2, 5, 8, 12, 18], 'ro')

# 第3个子图-柱形图
plt.subplot(2,1,2)
x = [1, 2, 3, 4, 5, 6]
height = [10, 20, 30, 40, 50, 60]
plt.bar(x, height)

plt.show()  # 显示图表
上述示例中有两个关键点一定要掌握:
subplot() 函数的前两个参数指定的是一个画布被分割的行数和列数,最后一个参数则指定的是当前绘制区域的位置编号,编号规则是行优先。

例如,图 2 中有 3 个子图:
多个子图的位置示意图如下图所示:


图 3 多个子图的位置示意图

使用 subpot() 函数在画布中绘图时,每次都要调用它指定绘图区域非常麻烦,相比之下,subplots() 函数则更直接,它会事先把画布区域分割好。

相关文章