.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 的原因是因为前三行ax1ax2ax3 将子图添加到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) 如何工作? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

fig.add_subplot()

js九宫格算法

python使用matplotlib可视化使用subplots函数将可视化的画布划分为网格状的若干子区通过nrows和ncols参数设置设置行数和列数

matplotlib通过单个列表迭代子图轴数组

java中如何终止当前方法,但不退出系统仍然继续下个方法计算?

R语言学习-基础篇1