什么';在matplotlib'中,[1]的含义是什么;s子图()?

什么';在matplotlib'中,[1]的含义是什么;s子图()?,matplotlib,subplot,Matplotlib,Subplot,不久前,我看到matplotlib的子图()的用法如下: fig, ax1 = plt.subplots()[1] 我在自己的脚本中出于某种原因使用了它,但不幸的是,我完全忘记了其中[1]的含义(我应该在代码中添加注释!)。有人能告诉我它是做什么的吗?我将尝试一步一步地解释[1]是什么,以及为什么它可能不是您真正想要的。另外,我假设您没有实际运行fig,ax=plt.subpllots()[1],因为这会给出一个错误,因为这个对象的第二个元素中没有要解包的内容。我将使用4个子图(2,2)的示例

不久前,我看到matplotlib的
子图()的用法如下:

fig, ax1 = plt.subplots()[1]

我在自己的脚本中出于某种原因使用了它,但不幸的是,我完全忘记了其中
[1]
的含义(我应该在代码中添加注释!)。有人能告诉我它是做什么的吗?

我将尝试一步一步地解释
[1]
是什么,以及为什么它可能不是您真正想要的。另外,我假设您没有实际运行
fig,ax=plt.subpllots()[1]
,因为这会给出一个错误,因为这个对象的第二个元素中没有要解包的内容。我将使用4个子图(2,2)的示例

因此,首先,
plt.figure()
返回一个
元组,其中包含一个
figure
和一组
轴(取决于作为参数传递的行数和列数)。因此:

这将返回
len
=2的
tuple
。如果您现在检查元组的第一个元素是什么,您将看到它是实际的空数字(以图形表示):

而第二个元素是
轴的数组(
Axes`是图像的数据空间区域,或者我想把它看作“给定图形上一组数据的实际表示”)

这将返回:

array([<matplotlib.axes._subplots.AxesSubplot object at 0x7fe02397c650>,
   <matplotlib.axes._subplots.AxesSubplot object at 0x7fe022c1e4d0>],
  dtype=object)

ax
array([<matplotlib.axes._subplots.AxesSubplot object at 0x7fe022deb210>,
   <matplotlib.axes._subplots.AxesSubplot object at 0x7fe0239b5ed0>],
  dtype=object)


最后,如果您想了解更多有关它的信息,子地块()上的
matplotlib
还有一些示例,并且还显示了
plt.subplot()
,无论传递给它的形状如何,总是返回一个
fig,ax
的元组(其中“ax:axs.axes对象或axes对象数组”).

您确定这行代码运行吗?无论是
fig,ax1=plt.subplot()
还是
ax1=plt.subplot()[1]
@QuangHoang加上“fig”,它都会给我一个“TypeError:'AxesSubplot'对象不可匹配”错误;删除[1]可以解决此问题(但我需要知道如果删除它会发生什么!)。但仅使用“ax1”[1]就没有任何错误。也许,为了更清楚,我应该在问题中只使用“ax1”。
plt.subplot()
返回一个元组
(图u实例,axis\u实例)
<代码>[1]
只是元组索引。@QuangHoang啊!那么,[1]正在为axis_实例编制索引吗?谢谢您的解释!
a[1]

array([[<matplotlib.axes._subplots.AxesSubplot object at 0x7fe02397c650>,
    <matplotlib.axes._subplots.AxesSubplot object at 0x7fe022c1e4d0>],
   [<matplotlib.axes._subplots.AxesSubplot object at 0x7fe022deb210>,
    <matplotlib.axes._subplots.AxesSubplot object at 0x7fe0239b5ed0>]],
  dtype=object)
fig, ax = a[1]
fig
array([<matplotlib.axes._subplots.AxesSubplot object at 0x7fe02397c650>,
   <matplotlib.axes._subplots.AxesSubplot object at 0x7fe022c1e4d0>],
  dtype=object)

ax
array([<matplotlib.axes._subplots.AxesSubplot object at 0x7fe022deb210>,
   <matplotlib.axes._subplots.AxesSubplot object at 0x7fe0239b5ed0>],
  dtype=object)
fig, ax = plt.subplots(2,2)[1]
ax[0].scatter(x=iris.sepal_length, y=iris.sepal_width) # Filling in the first `Axes`
ax[1].scatter(x=iris.sepal_width, y=iris.sepal_length) # Filling in the second `Axes`
plt.show()