Matplotlib:TypeError:'AxesSubplot'对象不可下标[重复]

Posted

技术标签:

【中文标题】Matplotlib:TypeError:\'AxesSubplot\'对象不可下标[重复]【英文标题】:Matplotlib: TypeError: 'AxesSubplot' object is not subscriptable [duplicate]Matplotlib:TypeError:'AxesSubplot'对象不可下标[重复] 【发布时间】:2019-02-15 19:38:12 【问题描述】:

我正在尝试制作包含在两个数据帧 df1 和 df2 中的变量“x”的简单箱线图。为此,我使用以下代码:

fig, axs = plt.subplots()
axs[0, 0].boxplot([df1['x'], df2['x']])
plt.show();

但是,我明白了:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-108-ce962754d553> in <module>()
----> 2 axs[0, 0].boxplot([df1['x'], df2['x']])
      3 plt.show();
      4 

TypeError: 'AxesSubplot' object is not subscriptable

有什么想法吗?

【问题讨论】:

【参考方案1】:
fig, axs = plt.subplots()

返回一个只有一个子图的图形,因此 axs 已经持有它而没有索引。

fig, axs = plt.subplots(3)

返回子图的一维数组。

fig, axs = plt.subplots(3, 2)

返回子图的二维数组。

请注意,这只是由于 kwarg squeeze=True 的默认设置。 通过将其设置为False,您可以强制结果为二维数组,与子图的数量或排列无关。

【讨论】:

谢谢!!哇,这太明显了哈:) 这是可怕的编程实践。他们正在发明不必要的边缘情况。现在我必须为只有 1 个子图的情况编写不同的代码 @MuhsinFatih 我想我可以想象,你的意思。你能描述一下,你必须以哪种具体方式编写不同的代码? 这是我必须添加的以处理边缘情况: axs = np.array(axs);轴 = np.reshape(轴,n)。 n 是形状变量 @MuhsinFatih 看到我的编辑,这应该会有所帮助

以上是关于Matplotlib:TypeError:'AxesSubplot'对象不可下标[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 add_axes 保存 matplotlib 图

第一讲work(axe)

matplotlib scatter画图报错:TypeError: ufunc ‘sqrt‘ not supported for the input types...rule ‘‘safe‘‘

matplotlib scatter画图报错:TypeError: ufunc ‘sqrt‘ not supported for the input types...rule ‘‘safe‘‘

散点图颜色条 - Matplotlib

如何在matplotlib散点图中规范化色彩映射?