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'对象不可下标[重复]的主要内容,如果未能解决你的问题,请参考以下文章
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‘‘