Matplotlib:TypeError:'AxesSubplot'对象不可下标

SHV*_*_la 5 python matplotlib typeerror

我正在尝试对包含在两个数据帧df1和df2中的变量'x'进行简单的箱形图绘制。为此,我使用以下代码:

fig, axs = plt.subplots()
axs[0, 0].boxplot([df1['x'], df2['x']])
plt.show();
Run Code Online (Sandbox Code Playgroud)

但是,我得到这个:

---------------------------------------------------------------------------
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
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Spg*_*tCd 8

fig, axs = plt.subplots()
Run Code Online (Sandbox Code Playgroud)

返回一个只有一个子图的图形,因此斧头已经持有该图形而没有建立索引。

fig, axs = plt.subplots(3)
Run Code Online (Sandbox Code Playgroud)

返回一维子图数组。

fig, axs = plt.subplots(3, 2)
Run Code Online (Sandbox Code Playgroud)

返回二维数组的子图。

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

  • 这是一种可怕的编程实践。他们正在发明不必要的边缘情况。现在我必须为只有 1 个子图的情况编写不同的代码 (6认同)
  • @MuhsinFatih 看看我的编辑,这应该有帮助 (3认同)