web-dev-qa-db-fra.com

Matplotlib: TypeError: l'objet 'AxesSubplot' n'est pas indexable

J'essaie de faire un simple diagramme en boîte d'une variable "x" contenue dans deux trames de données, df1 et df2. Pour ce faire, j'utilise le code suivant:

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

Cependant, je reçois ceci:

---------------------------------------------------------------------------
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

Des idées?

6
SHV_la
fig, axs = plt.subplots()

renvoie un chiffre avec un seul sous-tracé, donc axs le contient déjà sans indexation.

fig, axs = plt.subplots(3)

renvoie un tableau 1D de sous-tracés.

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

renvoie un tableau 2D de sous-tracés.

Notez que cela est uniquement dû au paramètre par défaut du kwarg squeeze=True .
En le définissant sur False, vous pouvez forcer le résultat à être un tableau 2D, indépendamment du nombre ou de la disposition des sous-tracés.

9
SpghttCd