1. ホーム
  2. python

[解決済み] Matplotlib: TypeError: 'AxesSubplot' object is not subscriptable [duplicate].

2022-03-03 20:05:46

質問

2つのデータフレーム、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

何かアイデアはありますか?

解決方法は?

fig, axs = plt.subplots()

は単一のサブプロットだけを持つ図を返すので、axs はインデックスを付けずに既にそれを保持しています。

fig, axs = plt.subplots(3)

はサブプロットの1次元配列を返します。

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

はサブプロットの2次元配列を返す。

なお、これはあくまでもkwargのデフォルトの設定によるものであり squeeze=True .
に設定することで False を使用すると、サブプロットの数や配置に関係なく、結果が2次元配列になるように強制することができます。