在Matplotlib中,参数在fig.add_subplot(111)中意味着什么?

有时我遇到这样的代码:

import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [1, 4, 9, 16, 25] fig = plt.figure() fig.add_subplot(111) plt.scatter(x, y) plt.show() 

其中产生:

由包含的代码生成的示例图

我一直在疯狂地阅读文档,但是我找不到111的解释。 有时我看到一个212

fig.add_subplot()意思是什么意思?

这些是将子网格参数编码为单个整数。 例如,“111”表示“1×1网格,第一个子图”,“234”表示“2×3网格,第四个子图”。

add_subplot(111)替代forms是add_subplot(111) add_subplot(1, 1, 1)

我认为这可以通过下面的图片来解释:

在这里输入图像描述

要初始化上述内容,可以input:

 import matplotlib.pyplot as plt fig = plt.figure() fig.add_subplot(221) #top left fig.add_subplot(222) #top right fig.add_subplot(223) #bottom left fig.add_subplot(224) #bottom right plt.show() 

编辑:一些额外的信息

以下组合产生子图的不对称排列。

 subplot(2,2,[1 3]) subplot(2,2,2) subplot(2,2,4) 

例2

你也可以使用冒号运算符来指定多个位置,如果它们是顺序的。

 subplot(2,2,1:2) subplot(2,2,3) subplot(2,2,4) 

在这里输入图像描述

在这里引用

康斯坦丁的答案是现货,但对于更多的背景,这种行为是从Matlabinheritance。

Matlab的行为在graphics设置 – 显示 Matlab文档中的每个图的多个图部分中解释。

子图(m,n,i)将数字窗口分解为小的子图的m×nmatrix,并为当前图select它的子图。 图中的数字沿着数字窗口的第一行,然后是第二行,依此类推。

我的解决scheme是

 fig = plt.figure() fig.add_subplot(1, 2, 1) #top and bottom left fig.add_subplot(2, 2, 2) #top right fig.add_subplot(2, 2, 4) #bottom right plt.show() 

2x2网格与1和3合并