<Python, matplotlib> figure, axesの配列指定
matplotlib
でaxes
を指定するとき、、
In [305]: import matplotlib.pyplot as plt In [306]: f, ax = plt.subplots(nrows=2, ncols=2)  In [307]: ax Out[307]: array([[<matplotlib.axes._subplots.AxesSubplot object at 0x00000000106C1E48>, <matplotlib.axes._subplots.AxesSubplot object at 0x000000001911DB38>], [<matplotlib.axes._subplots.AxesSubplot object at 0x0000000018E0B470>, <matplotlib.axes._subplots.AxesSubplot object at 0x000000001A676358>]], dtype=object) In [308]: ax[0,0] Out[308]: <matplotlib.axes._subplots.AxesSubplot at 0x106c1e48> In [309]: f, ax = plt.subplots(nrows=1, ncols=1)  In [310]: ax Out[310]: <matplotlib.axes._subplots.AxesSubplot at 0x18f1f080> In [311]: ax[0,0] --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-311-5f90218d402c> in <module>() ----> 1 ax[0,0] TypeError: 'AxesSubplot' object is not subscriptable In [312]: f, ax = plt.subplots(nrows=2, ncols=1)  In [313]: ax Out[313]: array([<matplotlib.axes._subplots.AxesSubplot object at 0x00000000136F66D8>, <matplotlib.axes._subplots.AxesSubplot object at 0x0000000018C79160>], dtype=object) In [314]: ax[0,0] --------------------------------------------------------------------------- IndexError Traceback (most recent call last) <ipython-input-314-5f90218d402c> in <module>() ----> 1 ax[0,0] IndexError: too many indices for array In [315]: ax[0] Out[315]: <matplotlib.axes._subplots.AxesSubplot at 0x136f66d8> In [316]:
という感じで、array[2,2]の時とarray[2,1]、array無の場合で、ax
のアクセス方法が異なる。。。 めんどくさい。。。
と、思ったんだが、、
なにやらマニュアルを読んだらsqueeze
というオプションを指定すればいいらしい。。。
http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.subplots
f, ax = plt.subplots(nrows=1, ncols=1, squeeze=False)  In [330]: ax Out[330]: array([[<matplotlib.axes._subplots.AxesSubplot object at 0x000000001827E048>]], dtype=object) In [331]: f, ax = plt.subplots(nrows=1, ncols=1, squeeze=True)  In [332]: ax Out[332]: <matplotlib.axes._subplots.AxesSubplot at 0x107f2c18> In [333]:
squeeze=False
だとarray
で返ってきた。
なるほど。。。