1、函数的功能
创建一个画布对象和一组子图对象。
2、函数的声明
fig, axs = subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)
3、参数说明
nrows :画布中包含多少行子图,默认1行。
ncols :画布中包含多少列子图,默认1列。
import matplotlib.pyplot as plt
r1=plt.subplots()
plt.show()
import matplotlib.pyplot as plt
r1=plt.subplots(nrows=2,ncols=3)
plt.show()
sharex :为‘col’或True时,表示所有子图共享X轴属性,默认为False。
sharey :为‘row’或True时,表示所有子图共享Y轴属性,默认为False。
import matplotlib.pyplot as plt
plt.subplots(2, 2, sharex='col',sharey='row')
plt.show()
import matplotlib.pyplot as plt
plt.subplots(2, 2, sharex=True,sharey=True)
plt.show()
import matplotlib.pyplot as plt
plt.subplots(2, 2, sharex=True,sharey=False)
plt.show()
import matplotlib.pyplot as plt
plt.subplots(2, 2, sharex=False,sharey=True)
plt.show()
squeeze :
值为True时,如果子图为(nrows=ncols=1),返回的子图对象是一个标量,如果子图为(nrows=1,ncols=n)或(nrows=n,ncols=1),返回的是一个一维子图数组,如果子图为(nrows=m,ncols=n),返回的是一个二维子图数组,默认为True。
值为False时,返回的是一个二维子图数组。
import matplotlib.pyplot as plt
r1,ax1=plt.subplots(nrows=1,ncols=2,squeeze=True)
print(ax1)
print(ax1.shape)
# 输出:
# [<AxesSubplot:> <AxesSubplot:>]
# (2,)
r2,ax2=plt.subplots(nrows=1,ncols=2,squeeze=False)
print(ax2)
print(ax2.shape)
# 输出:
# [[<AxesSubplot:> <AxesSubplot:>]]
# (1, 2)
r3,ax3=plt.subplots(nrows=2,ncols=2,squeeze=True)
print(ax3)
print(ax3.shape)
# 输出:
# [[<AxesSubplot:> <AxesSubplot:>]
# [<AxesSubplot:> <AxesSubplot:>]]
# (2, 2)
r4,ax4=plt.subplots(nrows=2,ncols=2,squeeze=False)
print(ax4)
print(ax4.shape)
# 输出:
# [[<AxesSubplot:> <AxesSubplot:>]
# [<AxesSubplot:> <AxesSubplot:>]]
# (2, 2)
4、返回值说明
fig :返回画布本身。
axs :返回子图数组,可以利用这个数组来访问每个子图。
import matplotlib.pyplot as plt
# 添加3行3列子图9个子图
fig, axes = plt.subplots(3, 3)
# 为第1个子图绘制图形
axes[0, 0].bar(range(1, 4), range(1, 4))
# 为第5个子图绘制图形
axes[1, 1].pie([4, 5, 6])
# 为第9个子图绘制图形
axes[2, 2].plot([1], 'o')
# 删除没有用到的子图
for i in range(3):
for j in range(3):
if i != j:
axes[i, j].remove()
plt.show()