Matplotlib库学习之pyplot.subplots函数
一、简介
pyplot.subplots
是 Matplotlib 的 pyplot
模块中的一个便捷函数,用于在一个图形(figure)中创建多个子图(axes)。它是一个快捷方式,可以一次性创建多个子图,而不需要使用循环或多次调用 add_subplot
。
二、语法和参数
pyplot.subplots
函数的基本语法如下:
plt.subplots(nrows, ncols, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)
nrows
:子图的行数。ncols
:子图的列数。sharex
:布尔值或坐标轴对象,指定子图是否共享x轴。sharey
:布尔值或坐标轴对象,指定子图是否共享y轴。squeeze
:布尔值,指定是否去除单维度条目。subplot_kw
:传递给add_subplot
的关键字参数。gridspec_kw
:传递给GridSpec
的关键字参数。**fig_kw
:创建图形时使用的其他关键字参数。
三、实例
3.1 创建一个2x2网格的子图
import matplotlib.pyplot as plt
# 创建一个2x2网格的子图
fig, axs = plt.subplots(2, 2)
# 绘制每个子图的内容
for i in range(2):
for j in range(2):
axs[i, j].plot([i, j], [j, i])
# 显示图形
plt.show()
输出:一个2x2网格的窗口,每个子图显示两条交叉的线。
3.2 创建共享x轴的子图
import matplotlib.pyplot as plt
# 创建共享x轴的子图
fig, axs = plt.subplots(2, 1, sharex=True)
# 绘制每个子图的内容
for ax in axs:
ax.plot([1, 2, 3], [4, 5, 6])
# 显示图形
plt.show()
输出:一个2行1列的窗口,两个子图共享x轴,都显示相同的折线图。
3.3 创建共享y轴的子图
import matplotlib.pyplot as plt
# 创建共享y轴的子图
fig, axs = plt.subplots(1, 2, sharey=True)
# 绘制每个子图的内容
for ax in axs:
ax.plot([1, 2, 3], [4, 5, 6])
# 显示图形
plt.show()
输出:一个1行2列的窗口,两个子图共享y轴,都显示相同的折线图。
四、注意事项
pyplot.subplots
返回两个值:一个图形对象和包含所有子图的数组。- 当
sharex
或sharey
设置为True
时,所有子图将共享相应的轴。 squeeze=True
时,如果子图数组只有单个元素,将返回单个坐标轴而不是数组。subplot_kw
允许用户为每个子图指定额外的参数,例如三维坐标轴projection='3d'
。fig_kw
用于传递创建图形时的其他参数,如figsize
。- 使用
plt.subplots
可以简化创建多个子图的代码,特别是在需要固定布局的子图时。