目前我正在尝试熟悉matplotlib.pyplot库。在看了一些示例和教程之后,我注意到子图函数也有一些返回值,这些值通常在以后使用。但是,在matplotlib网站上,我无法找到关于究竟返回的内容的任何规范,并且没有一个示例是相同的(尽管它通常似乎是一个ax对象)。你们可以给我一些关于返回内容的指示,以及如何使用它。提前谢谢!
答案 0 :(得分:13)
在documentation中它表示matplotlib.pyplot.subplots
返回Figure
的实例和一个(或单个)Axes
的数组(数组与否)取决于数量副区)。
常用的是:
import matplotlib.pyplot as plt
import numpy as np
f, axes = plt.subplots(1,2) # 1 row containing 2 subplots.
# Plot random points on one subplots.
axes[0].scatter(np.random.randn(10), np.random.randn(10))
# Plot histogram on the other one.
axes[1].hist(np.random.randn(100))
# Adjust the size and layout through the Figure-object.
f.set_size_inches(10, 5)
f.tight_layout()
答案 1 :(得分:1)
通常, matplotlib.pyplot.subplots() 返回图形实例和一个对象或一组轴对象。
由于您尚未发布试图弄脏代码的代码,因此我将通过2个测试用例来做到这一点:
情况1:当提及所需子图的数量(尺寸)
import matplotlib.pyplot as plt #importing pyplot of matplotlib
import numpy as np
x = [1, 3, 5, 7]
y = [2, 4, 6, 8]
fig, axes = plt.subplots(2, 1)
axes[0].scatter(x, y)
axes[1].boxplot(x, y)
plt.tight_layout()
plt.show()
正如您在此处看到的,因为我们给出了所需的子图数量,在这种情况下为(2,1),这意味着没有。行数,r = 2,否。的列数,c = 1。 在这种情况下,子图将返回图形实例以及一系列轴,这些轴的长度等于总数。子图的数量= r * c,在这种情况下=2。
情况2:未提及子图的数量(维度)
import matplotlib.pyplot as plt #importing pyplot of matplotlib
import numpy as np
x = [1, 3, 5, 7]
y = [2, 4, 6, 8]
fig, axes = plt.subplots()
#size has not been mentioned and hence only one subplot
#is returned by the subplots() method, along with an instance of a figure
axes.scatter(x, y)
#axes.boxplot(x, y)
plt.tight_layout()
plt.show()
在这种情况下,没有明确提及尺寸或尺寸,因此,除了图形实例之外,仅创建了一个子图。
您还可以使用squeeze关键字来控制子图的尺寸。参见documentation。这是一个可选参数,默认值为True。
答案 2 :(得分:0)
实际上,'matplotlib.pyplot.subplots()' 返回两个对象:
'matplotlib.pyplot.subplots()' 需要很多参数。下面给出了:
matplotlib.pyplot.subplots(nrows=1,ncols=1,*,sharex=False,sharey=False,squeeze=True,subplot_kw=None,gridspec_kw=None,**fig_kw)
前两个参数是: nrows :我想在我的子图网格中创建的行数, ncols :子图网格中应该有的列数。但是,如果 'nrows' 和 'ncols' 没有明确声明,则默认情况下每个值都为 1。
现在,来到已经创建的对象: (1) figure 实例只不过是抛出一个可以容纳所有情节的 figure。
(2)'axes' 对象将包含每个子图的所有信息。
让我们通过一个例子来理解:
这里,在 (0,0),(0,1),(1,0),(1,1) 的位置创建了 4 个子图。
现在,让我们假设,在位置 (0,0),我想要一个散点图。我将做什么:我将散点图合并到“axes[0,0]”对象中,该对象将保存有关散点图的所有信息并将其反映到图形实例中。 其他三个职位也会发生同样的事情。
希望这会有所帮助,并让我知道您对此的看法。