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

zlhcx6iw  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(174)

这个问题已经有答案了

understanding matplotlib.subplots python [duplicate](1个答案)
五年前就关门了。
我试图制作一个简单的箱线图,变量'x'包含在两个数组df1和df2中。为此,我使用以下代码:

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

有什么想法吗?

bybem2ql

bybem2ql1#

fig, axs = plt.subplots()

返回一个只有一个子图的图,所以axs已经保存了它而没有索引。

fig, axs = plt.subplots(3)

返回子图的一维数组。

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

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

import numpy
from PIL import Image
import matplotlib.pyplot as plt

imarray = numpy.random.rand(10,10,3) * 255
im = Image.fromarray(imarray.astype('uint8')).convert('RGBA')

#rows = 1; cols = 1;
#rows = 5; cols = 3;
rows = 1; cols = 5;
fig, ax = plt.subplots(rows, cols, squeeze=False)
fig.suptitle('random plots')
i = 0
for r in range(rows):
    for c in range(cols): 
        ax[r][c].imshow(im)
        i = i + 1     
plt.show()
plt.close()

相关问题