我正在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
我得到这个输出
我的问题是最后一个参数的工作方式。为什么对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上。
如果有人可以解释索引的工作原理,我将不胜感激。花了相当多的时间研究仍然没有得到。
答案 0 :(得分:2)
此处使用的索引212
是有意的。在这里,前两个索引表示2行和1列。当第三个数字为1(211)时,表示在第一行中添加子图。当第三个数字为2(212)时,表示在第二行中添加子图。
在上面的示例中使用212
的原因是因为前三行ax1
,ax2
和ax3
将子图添加到第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)
如果使用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)