matplotlib 如何更改多个子图的大小并添加主标题?[重复]

w80xi6nr  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(124)

此问题已在此处有答案

How do I change the figure size with subplots?(6个回答)
Global legend and title aside subplots(4个答案)
上个月关闭。

x = np.linspace(0, 5, 11)
y = x ** 2

# First plot
plt.subplot(131)
plt.plot(y, label='x**2')
plt.plot(x ** 3, label='x**3')
plt.title('default axes ranges')
plt.legend(loc = 2)
plt.ylim(0,120)
plt.xlim(0,5)

# Second plot
plt.subplot(132)
plt.plot(y, label='x**2')
plt.plot(x ** 3, label='x**3')
plt.title('tight axes')
plt.legend(loc = 2)
plt.ylim(0,120)
plt.xlim(0,5)

# Third plot
plt.subplot(133)
plt.plot(y, label='x**2')
plt.plot(x ** 3, label='x**3')
plt.title('custom axes range')
plt.legend(loc = 1)
plt.ylim(0,60)
plt.xlim(2.0,5.0);

它看起来是这样的:

这就是我想要的外观:

如何更改大小使其与第二张照片相匹配?以及如何添加主标题?

plt.title('multiple plots')

上面的命令不起作用。它不会显示在输出中。

mtb9vblg

mtb9vblg1#

有两种方法可以做到
1-你可以使用plt.figure(figsize=(15, 6))来打开一个图,然后再写它。这样你就可以根据你的需要调整图的大小,对于标题,你需要plt.suptitle("title")
2-你可以简单地使用fig, ax = plt.subplots(nrows, ncolumns, figsize=(x, y)) .这将返回一个图和多个轴,所以你可以像ax[row_num][column_num]一样引用它们,然后使用那个轴方法来绘制.对于你的代码,它将像:

x = np.linspace(0, 5, 11)
y = x ** 2

# First plot
fig, ax = subplots(1, 3, figsize(15, 5))
ax[0].plot(y, label='x**2')
ax[0].plot(x ** 3, label='x**3')
ax[0].set_title('default axes ranges')
ax[0].legend(loc = 2)
ax[0].set_ylim(0, 120)
ax[0].set_xlim(0, 5)

# Second plot
ax[1].plot(y, label='x**2')
ax[1].plot(x ** 3, label='x**3')
ax[1].set_title('tight axes')
ax[1].legend(loc = 2)
ax[1].set_ylim(0, 120)
ax[1].set_xlim(0, 5)

# Third plot
ax[2].plot(y, label='x**2')
ax[2].plot(x ** 3, label='x**3')
ax[2].set_title('custom axes range')
ax[2].legend(loc = 2)
ax[2].set_ylim(0, 60)
ax[2].set_xlim(2, 5)
fig.suptitle("mutiple plots")
plt.show()

相关问题