Bus errorとSegmentation faultに困ったら見るブログ

物理の研究者による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)

【matplotlib】subplotsを使った複数プロットの例

この例で使ったのは、8個のデータが別のkeyでdataという辞書型に入ってる
nはデータの数


プロットは8個のデータをsubplotsで並べてプロットする

縦に8個並べるんじゃなくて、2x4で自動的に折り返す感じ
数字を変えたら、他のパターンも可能

q_1p, q_99p = np.percentile(data[ch], q=[1, 99])
は上位1%と上位99%の値を調べる




それを時系列データに同時にプロットする

from matplotlib import pyplot as plt
fig = plt.figure()
n = 8
n2 = int(n/2)
fig, axes = plt.subplots(n2,2, figsize=(30, 15), sharex=True)

k=0
for ch in data.keys():
 ii=n
 k = int(ii / n2)
 i = ii % n2

 axes[i, k].plot(data[ch], label=labels[ii], color="green")
 axes[i, k].legend(loc="upper right")

 #q_1p = np.quantile(data[ch], 0.01)
 #q_99p = np.quantile(data[ch], 0.99)
 q_1p, q_99p = np.percentile(data[ch], q=[1, 99])
 axes[i, k].axhline(y=q_1p, color="m", alpha=0.7, linestyle='--')
 axes[i, k].axhline(y=q_99p, color="m", alpha=0.7, linestyle='--')

axes[0, 0].set_title("time from %s" % time1)
axes[0, 1].set_title("channel = %s" % ch_out)

fig.savefig("./fig/hoge.png")
from matplotlib import pyplot as plt

ax1 = plt.subplot(2, 1, 1)
ax1.plot(data_freq, data_TF, color="skyblue", marker="o", linestyle="None", label="aaaaa")
ax1.set_xscale('log')
ax1.set_yscale('log')
ax1.set_ylabel('magnitude')
ax1.set_xlim(fmin, fmax)
ax1.set_title("title daup")
ax1.legend(loc="upper right")

ax2 = plt.subplot(2, 1, 2)
ax2.plot(data1, data2, label="coherence (original)")
ax2.set_xscale('log')
ax2.set_xlabel('frequency [Hz]')
ax2.set_ylabel('coherence')
ax2.set_xlim(fmin, fmax)
ax2.legend(loc="lower right")
plt.savefig(fname)
plt.show()