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()
的参数是什么意思?
Sometimes I come across code such as this:
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()
Which produces:
I've been reading the documentation like crazy but I can't find an explanation for the 111
. sometimes I see a 212
.
What does the argument of fig.add_subplot()
mean?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
我认为下面的图片可以最好地解释这一点:
要初始化上述内容,可以输入:
I think this would be best explained by the following picture:
To initialize the above, one would type:
这些是编码为单个整数的子图网格参数。例如,“111”表示“1x1 网格,第一个子图”,“234”表示“2x3 网格,第四个子图”。
add_subplot(111)
的替代形式是add_subplot(1, 1, 1)
。These are subplot grid parameters encoded as a single integer. For example, "111" means "1x1 grid, first subplot" and "234" means "2x3 grid, 4th subplot".
Alternative form for
add_subplot(111)
isadd_subplot(1, 1, 1)
.Constantin 的答案很准确,但更多背景信息是从 Matlab 继承的。
图形设置 - 每个图形显示多个图中解释了 Matlab 行为Matlab 文档的部分。
The answer from Constantin is spot on but for more background this behavior is inherited from Matlab.
The Matlab behavior is explained in the Figure Setup - Displaying Multiple Plots per Figure section of the Matlab documentation.
我的解决方案是
My solution is
第一个代码在具有 3 行和 2 列的布局中创建第一个子图。
第一列中的三个图表示 3 行。第二个图位于同一列中第一个图的下方,依此类推。
最后两张图的参数
(2, 2)
表示第二列只有两行,位置参数按行移动。The first code creates the first subplot in a layout that has 3 rows and 2 columns.
The three graphs in the first column denote the 3 rows. The second plot comes just below the first plot in the same column and so on.
The last two plots have arguments
(2, 2)
denoting that the second column has only two rows, the position parameters move row wise.add_subplot() 方法有几个调用签名:
add_subplot(nrows, ncols, index, **kwargs)
add_subplot(pos, **kwargs)
add_subplot(ax)
add_subplot()
<-- 从 3.1.0 开始调用 1 和 2:
调用 1 和 2 实现了彼此相同的目标(最多限制,解释如下)。将它们视为首先使用其前 2 个数字(2x2、1x8、3x4 等)指定网格布局,例如:
两者都会生成 3 行中 (3 x 4 = 12) 个子图的子图排列和 4 列。每次调用中的第三个数字指示要返回哪个轴对象,从左上角的1开始,向右增加。
此代码说明了使用调用 2 的限制:
您可以看到,使用左轴上的调用 1 可以返回任何轴对象,但是使用右轴上的调用 2 > 使用此调用只能返回索引 = 9 的子图 j)、k) 和 l) 无法访问。
即它从文档中说明了这一点 :
拨打3
调用 4(自 3.1.0 起):
即,重现问题中的调用
fig.add_subplot(111)
。这本质上设置了一个 1 x 1 的子图网格,并返回网格中的第一个(也是唯一的)轴对象。The add_subplot() method has several call signatures:
add_subplot(nrows, ncols, index, **kwargs)
add_subplot(pos, **kwargs)
add_subplot(ax)
add_subplot()
<-- since 3.1.0Calls 1 and 2:
Calls 1 and 2 achieve the same thing as one another (up to a limit, explained below). Think of them as first specifying the grid layout with their first 2 numbers (2x2, 1x8, 3x4, etc), e.g:
Both produce a subplot arrangement of (3 x 4 = 12) subplots in 3 rows and 4 columns. The third number in each call indicates which axis object to return, starting from 1 at the top left, increasing to the right.
This code illustrates the limitations of using call 2:
You can see with call 1 on the LHS you can return any axis object, however with call 2 on the RHS you can only return up to index = 9 rendering subplots j), k), and l) inaccessible using this call.
I.e it illustrates this point from the documentation:
Call 3
Call 4 (since 3.1.0):
i.e., reproducing the call
fig.add_subplot(111)
in the question. This essentially sets up a 1 x 1 grid of subplots and returns the first (and only) axis object in the grid.fig.add_subplot(ROW,COLUMN,POSITION)
示例
共有 2 行 1 列,因此可以绘制 2 个子图。它的位置是第一。总共2行1列,因此可以绘制2个子图。它的位置是第2个
fig.add_subplot(ROW,COLUMN,POSITION)
Examples
There are total 2 rows,1 column therefore 2 subgraphs can be plotted. Its location is 1st. There are total 2 rows,1 column therefore 2 subgraphs can be plotted.Its location is 2nd
一些规则:
必须小于或等于先前最大的数字。
(y)第一个数字,定义如何y 或顶部和底部(垂直)所需的空格示例 1 表示所有页面仅包含 1 张图表,2 表示顶部可以有一张图表,底部可以有一张图表,3 表示顶部可以有一张图表,中间可以有一张图表,底部可以有 1 个图表以此类推
(x) 第二个数字,定义左侧和右侧需要多少个空格,示例 1 表示 1 个图表的页面全宽,2 表示页面可以包含左侧 1 个图表和右侧 1 个图表,3 表示页面可以包含 1 个图表左边,一个在中间,一个在右边,就像上一个一样,但是对于左边和右边,就像画布中的 x
最后定义图表的位置示例:如果我们有 1,2,1,那么 1 表示一个图表的全高,2 表示有 2 个页面宽度图表,一个在左边,一个在右边,那么最后 1 表示从左边开始,如果 2 表示放在第二个位置,右边,如果 1,3,1 那么我们有 3 个位置左,中,右,所以最后一个1将在左边,如果它是1、3、2,那么最后2意味着中心,如果3它将在右边,依此类推,记住第一条规则最后一个数字必须低于前一个,因为这定义了一个位置,
例如2, 1,1 : 2 表示 y 有 2 个位置,表示一个在顶部,一个在底部,第二个 1 表示图表的全宽,因此图表将采用全宽,最后一个将基于第一个数字,因此将从顶部,如果
2,1,2 最后 2 表示第二名,即底部
(例如仅 1 个图表)
y,x,z (1,1,1) 或 111 这意味着整页有 1 个图表
,所以让我们看一些带有图像的示例
请注意常用的 111 表示 1 个图表在整页中 (1) 表示全高,第二个 (1) 表示全宽,第 1 个位置,请注意,如果我们将其设置为 112 或 113,我们将收到错误,因为顶部和底部仅可用 1 个位置,左侧和左侧各 1 个位置是的,为了增加最后一个数字,您必须有任何先前的数字大于或等于最后一个数字。
最后一点:(224)这里我们在顶部和底部有 2 个位置,在左侧和右侧有 2 个位置,因此在这种情况下,最后一个数字可以比这两个位置都大,因为有 2 个位置从左到右开始,其他 2 个位置将一起使用时是顶部和底部 1 将在左上角,2 将在右上角,3 将在左下角,4 将在右下角最后一个位置,
所以
希望我能很好地描述它,如果有任何语法错误,请原谅我
some rules:
must be lower or equal that biggest previous number.
(y) the first number, define how spaces needed for y or top and bottom (vertical) example 1 means all page include 1 chart only, 2 means can have one at top and one at bottom, 3 means can have one chart at top, one at middle and 1 and bottom and so on
(x) the second number, define how many spaces needed for left and right, example 1 means full width of page for 1 chart, 2 means page can include one at left and one at right, 3 means can have 1 chart at left and one at middle and one at right like prev but for left and right like x in canvas for example
last define the placement of chart example: if we have 1,2,1 so 1 means full height for one chart, and 2 means there are 2 charts for page width one at left and one at right, then last 1 means start at left, if 2 means put at second placment which right, if 1,3,1 so we have 3 places left, center, right so last 1 will be left, if it 1, 3, 2 so last 2 means center, if 3 it will be at right and so on, remember first rules the last number must be lower than previous as this define one place
for example 2,1,1 : 2 means there are 2 places for y which mean one at top and one at bottom, and second 1 means full width for chart so chart will take full width, last one will be based on first number so it will start from top, and if
2,1,2 the last 2 means second place which means bottom
(for example 1 chart only)
y,x,z (1,1,1) or 111 this means 1 chart in full page
so lets see some examples with image
Note the usally used 111 means 1 chart in full page (1) means full height, second (1) means full width, and 1 first position, note if we make it 112 or 113 we will get error as only aviable 1 place for top and bottom and 1 place for left and right, in order to incerase last number you must have any previous number bigger or equal that the last .
last point: (224) here we have 2 places at top and bottom, and 2 places at left and right so in that case last number can be bigger than both as there 2 places start from left to right, and other 2 places which will be top and bottom when used together 1 will be top left, 2 will be top right, 3 will be bottom left and 4 will be bottom right the last place
so
hope i could describe it well and forgive me if any grammar mistakes