ちょいめも

物理/Python/Cの雑記帳

matplotlib覚書

よく忘れるので覚書

import matplotlib.pyplot as plt

#----------折れ線グラフを1つ描画----------
x = [1,2,3,4,5]
y1 = [2,3,5,7,8]
y2 = [2,4,7,10,13]
plt.plot(x, y1, label="1")
plt.plot(x, y2, label="2")
plt.legend()  # 凡例をグラフにプロット
plt.title("sample : $ y = x $") #数式を入れる場合はTeX形式
plt.xlabel("X")
plt.ylabel("Y")
plt.xlim(1, 5)  # yを0-5000の範囲に限定
plt.ylim(0, 15)  # yを0-5000の範囲に限定
plt.hlines([4, 10], 2, 4, linestyles="dashed")  # y=4,10 x=2~4に破線を描画

plt.savefig('image01.png') #グラフをエクスポート
plt.show() #ここで、ここまでのグラフの設定、描画を終了

#----------散布図----------

keisankekka = len(y2)
plt.plot(x, y1, ".", label="len:%.1f" % keisankekka) #ラベルを計算結果にしたり
plt.plot(x, y2, "x", label="2")
plt.legend()  # 凡例をグラフにプロット
plt.text(1.5, 10, 'chushaku') #注釈を入れる、グラフのx、y座標を指定する
plt.savefig('image02.png') #グラフをエクスポート

#----------折れ線グラフを複数描画----------
fig, axes = plt.subplots(nrows = 2, ncols = 2, figsize=(5, 5), sharex = False) #sharex:x軸共有しない

#グラフ1
axes[0,0].plot(x, y1, label="0,0")
axes[0,0].legend() # 凡例を表示
axes[0,0].set_title('1')
axes[0,0].set_xlabel('x')
axes[0,0].set_ylabel('y')
axes[0,0].set_xlim(1, 5)
axes[0,0].set_ylim(0, 10)

axes[0,1].plot(x, y2, label="0,1")
axes[0,1].legend() # 凡例を表示
axes[0,1].set_title('2')
axes[0,1].set_xlabel('x')
axes[0,1].set_ylabel('y')
axes[0,1].set_xlim(1, 3)
axes[0,1].set_ylim(0, 15)

axes[1,0].plot(x, y2, label="1,0")
axes[1,0].legend() # 凡例を表示
axes[1,0].set_title('3')
axes[1,0].set_xlabel('x')
axes[1,0].set_ylabel('y')
axes[1,0].set_xlim(1, 3)
axes[1,0].set_ylim(0, 15)

axes[1,1].axis('off') #空白

fig.tight_layout()  # タイトルとラベルが被るのを解消
plt.savefig('image03.png') #グラフをエクスポート