.add_subplot(nrows,ncols,index)如何工作?

时间:2019-02-03 22:03:45

标签: python matplotlib subplot

我正在matplotlib的add_subplot()函数中创建图形。

当我运行这个

ax1 = fig.add_subplot(231)
ax2 = fig.add_subplot(232)
ax3 = fig.add_subplot(233)
ax4 = fig.add_subplot(212) # why not 211

我得到这个输出

enter image description here

我的问题是最后一个参数的工作方式。为什么对ax4来说它是212,而不是211,因为第二行只有一个图?

如果我以211(而不是212)运行,如下所示:

ax1 = fig.add_subplot(231)
ax2 = fig.add_subplot(232)
ax3 = fig.add_subplot(233)
ax4 = fig.add_subplot(211)

我得到了这个输出,在图4放在第一行的图2上。

enter image description here

如果有人可以解释索引的工作原理,我将不胜感激。花了相当多的时间研究仍然没有得到。

1 个答案:

答案 0 :(得分:2)

此处使用的索引212是有意的。在这里,前两个索引表示2行和1列。当第三个数字为1(211)时,表示在第一行中添加子图。当第三个数字为2(212)时,表示在第二行中添加子图。

在上面的示例中使用212的原因是因为前三行ax1ax2ax3将子图添加到第2行第3列网格。如果211用于第四子图(ax4),它将与(231), (232)(233)的第一行重叠。这可以在下面的第二个图中看到,其中您看到ax4与基础3个子图重叠。这就是使用ax4(212)添加到2行1列图形的第二行中,而不是使用(211)

将其添加到第一行中的原因

如果使用212,则会得到以下输出

fig = plt.figure()

ax1 = fig.add_subplot(231)
ax2 = fig.add_subplot(232)
ax3 = fig.add_subplot(233)
ax4 = fig.add_subplot(212)

enter image description here

如果使用211,则会得到以下输出。如您所见,ax4涵盖了3个子图。

fig = plt.figure()

ax1 = fig.add_subplot(231)
ax2 = fig.add_subplot(232)
ax3 = fig.add_subplot(233)
ax4 = fig.add_subplot(211)

enter image description here