如何使用pyplot使一个轴占据多个子图

新手上路,请多包涵

我想在一个图中包含三个图。该图应具有二乘二的子图布局,其中第一个图应占据前两个子图单元格(即整个第一行图单元格),其他图应位于单元格 3 和 4 中第一个图的下方。

我知道 MATLAB 通过使用 subplot 命令允许这样做,如下所示:

 subplot(2,2,[1,2]) % the plot will span subplots 1 and 2

在 pyplot 中是否也可以让一个轴占据多个子图? pyplot.subplot 的文档字符串没有谈论它。

有人有一个简单的解决方案吗?

原文由 Sven 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 444
2 个回答

你可以简单地做:

 import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 7, 0.01)

plt.subplot(2, 1, 1)
plt.plot(x, np.sin(x))

plt.subplot(2, 2, 3)
plt.plot(x, np.cos(x))

plt.subplot(2, 2, 4)
plt.plot(x, np.sin(x)*np.cos(x))

即,第一个图实际上是上半部分的图(该图仅分为 2x1 = 2 个单元格),而以下两个较小的图是在 2x2=4 单元格网格中完成的。 subplot() 的第三个参数是绘图在网格内的位置(以英文阅读的方向,单元格 1 位于左上角):例如在第二个子图中( subplot(2, 2, 3) ),轴将转到 2x2 矩阵的第三部分,即左下角。

在此处输入图像描述

原文由 Eric O Lebigot 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用 Gridspec 制作多列/行子图布局 显示了使用 GridSpec 执行此操作的方法。具有 3 个子图的示例的简化版本如下所示

import matplotlib.pyplot as plt

fig = plt.figure()

gs = fig.add_gridspec(2,2)
ax1 = fig.add_subplot(gs[0, 0])
ax2 = fig.add_subplot(gs[0, 1])
ax3 = fig.add_subplot(gs[1, :])

plt.show()

在此处输入图像描述

原文由 ImportanceOfBeingErnest 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题