概要
fig, axes = plt.subplots(2,3)のaxesの要素にfor文でアクセスするとき,普段なら,
for i in range(2):
for j in range(3):
axes[i, j]
とするが,これを
for i in range(6):
axes[i]
のようにfor文1つでアクセスする方法を考えた.
TL;DR
for文の前にaxes = axes.reshape(-1)を置くだけ
fig, axes = plt.subplots(2, 3)
axes = axes.reshape(-1)
for i in range(6):
...
axesは単なる二次元配列なので,1次元にしてやればよい.
例
ランダムな周波数で10個のサイングラフを生成する.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#サンプルデータ生成
data_size = 10
f = np.random.randint(1, 10, data_size)
t = np.arange(0, 10, 0.01)
data = [np.sin(2*np.pi*i*t) for i in f]
fig, axes = plt.subplots(5, 2)
#ここでaxesの配列を1次元にする
axes = axes.reshape(-1)
fig.tight_layout()
for i, datum in enumerate(data):
axes[i].plot(data[i])
plt.show()