matplotlib: 2つのグラフを一度に描画する

複数のグラフを表示する

  • 1つまたは2つのファイルから2種類のデータを描画する
  • 縦軸が共通の場合と、異なる場合

例えば以下のようなデータが data.csv という名称で存在するとする。

id,value1,value2
1,0.5,10.4
2,5.4,30.9
3,7.9,80.9
4,10.2,140.9
5,13.2,221.3

同じ軸でプロットしてみる。単に2発Plotすればいいだけ。
こちらの記事も参照

import pandas as pd
import matplotlib.pyplot as plt
df= pd.read_csv('data.csv', header=0, index_col=0)
plt.plot(df.index, df['value1'], marker='o')
plt.plot(df.index, df['value2'], marker='x')
plt.show()

簡単に表示はできるが、異なるスケールであるため青色のプロットの変化が見づらくなってしまっている。

このようにスケールが異なる場合には縦軸を変更すると良い。

# サブプロット (分割プロット) コマンドで軸を取得
fig, ax1 = plt.subplots()
# ax1 と Xが共通な軸 = y軸を作成
ax2 = ax1.twinx()

# ax1, ax2に対してプロットを実施
# 区別をつけるために色分け、凡例を出すためにlabelを指定。
ax1.plot(df.index, df['value1'], color='red', label='1st line')
ax2.plot(df.index, df['value2'], color='blue', label='2nd line')
# 各Y軸に表示するラベルを指定。
ax1.set_ylabel('value1')
ax2.set_ylabel('value2')
# 凡例 (legend) の表示
fig.legend()
plt.show()

コメント

このブログの人気の投稿

gnuplot: グラフの色を変更する

[Linux] rsyncで進捗を確認する

gnuplotで縦線を引きたい