返回子图的值

时间:2015-04-15 07:42:17

标签: matplotlib python-2.6

目前我正在尝试熟悉matplotlib.pyplot库。在看了一些示例和教程之后,我注意到子图函数也有一些返回值,这些值通常在以后使用。但是,在matplotlib网站上,我无法找到关于究竟返回的内容的任何规范,并且没有一个示例是相同的(尽管它通常似乎是一个ax对象)。你们可以给我一些关于返回内容的指示,以及如何使用它。提前谢谢!

3 个答案:

答案 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()

enter image description here

正如您在此处看到的,因为我们给出了所需的子图数量,在这种情况下为(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()

enter image description here

在这种情况下,没有明确提及尺寸或尺寸,因此,除了图形实例之外,仅创建了一个子图。

您还可以使用squeeze关键字来控制子图的尺寸。参见documentation。这是一个可选参数,默认值为True。

答案 2 :(得分:0)

实际上,'matplotlib.pyplot.subplots()' 返回两个对象:

  1. 图形实例。
  2. “轴”。

'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' 对象将包含每个子图的所有信息。

让我们通过一个例子来理解:

enter image description here

这里,在 (0,0),(0,1),(1,0),(1,1) 的位置创建了 4 个子图。

现在,让我们假设,在位置 (0,0),我想要一个散点图。我将做什么:我将散点图合并到“axes[0,0]”对象中,该对象将保存有关散点图的所有信息并将其反映到图形实例中。 其他三个职位也会发生同样的事情。

希望这会有所帮助,并让我知道您对此的看法。