fig.add_subplot(111)中的参数是什么意思?

589 投票
7 回答
530651 浏览
提问于 2025-04-16 03:23

有时候我会看到这样的代码:

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()里的参数是什么意思呢?

7 个回答

52

Constantin的回答非常准确,但为了让大家更明白,这种行为是从Matlab继承过来的。

Matlab的这种行为可以在图形设置 - 在一个图形中显示多个图表的文档中找到解释。

subplot(m,n,i)会把图形窗口分成一个m行n列的小图表矩阵,并选择第i个小图表作为当前绘制的地方。图表的编号是从图形窗口的第一行开始,然后是第二行,以此类推。

625

我觉得用下面这张图片来解释会更好:

在这里输入图片描述

要初始化上面的内容,可以输入:

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()
610

这些是子图网格的参数,用一个整数来表示。比如,“111”就表示“1行1列的网格,第一张子图”,而“234”则表示“2行3列的网格,第四张子图”。

另外一种写法是 add_subplot(111) 可以写成 add_subplot(1, 1, 1)

撰写回答