.add_subplot(nrows, ncols, index) 如何工作? [复制]
Posted
技术标签:
【中文标题】.add_subplot(nrows, ncols, index) 如何工作? [复制]【英文标题】:How the .add_subplot(nrows, ncols, index) works? [duplicate] 【发布时间】:2019-06-27 17:10:37 【问题描述】:我正在 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)
我得到这个输出,其中 Plot 4 放置在 Plot 2 的第一行。
如果有人能解释索引是如何工作的,我将不胜感激。花了好长时间研究还是没弄明白。
【问题讨论】:
【参考方案1】:这里使用的索引212
是故意的。这里前两个索引表示 2 行和 1 列。当第三个数字为 1(211)时,表示在第一行添加子图。当第三个数字为 2(212)时,表示在第二行添加子图。
在上面的示例中,使用212
的原因是因为前三行ax1
、ax2
和ax3
将子图添加到2 行3 列网格中。如果211
用于第四个子图(ax4
),它将与(231), (232)
和(233)
的第一行重叠。这可以在下面的第二张图中看到,您可以看到ax4
与底层的 3 个子图重叠。这就是使用(212)
将ax4
添加到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)
【讨论】:
好的。我现在明白了。感谢您的澄清。它回答了我的问题。 不客气以上是关于.add_subplot(nrows, ncols, index) 如何工作? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
python使用matplotlib可视化使用subplots函数将可视化的画布划分为网格状的若干子区通过nrows和ncols参数设置设置行数和列数