はじめに
この記事では、スケールの異なる2つのデータを1つのグラフに表示するための「twinx」機能について解説します。左右の軸を別々に設定することで、異なるスケールのデータを同じグラフ上で効果的に可視化する方法を紹介します。
コード

解説
モジュールのインポート
データの生成
data1はマイナスの指数関数であるため、tの増加に伴って値が大きく低下します。
data2はcos波であり、データの範囲は-1〜1に収まります。そのため、tが増加するにつれてdata1とdata2の差は徐々に大きくなります。
これらを同じy軸上に表示すると以下のようになります。
軸のスケールが大きすぎるため、本来cos波であるはずのdata2が直線のように見えてしまいます。

図の表示
data1は通常のプロットと同様に表示します。
colorの’tab:orange’はTableau Colorsという色のセットの名前です。
プロット、ラベル、目盛りの色を統一することで、表示したデータが左側の第1軸のデータであることを明確に示すことができます。
第2軸の設定
第2軸をax2として設定するには、ax2 = ax1.twinx() と記述します。
ax2はaxesオブジェクトであるため、ax1と同様に軸ラベルや目盛りなどを自由に設定できます。
このサンプルでは、第2軸に関連する要素をすべて’tab:green’で統一表示しています。
x軸の設定
x軸に関連する色は’tab:purple’としました。
コードをダウンロード(.pyファイル) コードをダウンロード(.pyファイル)まとめ
matplotlibのtwinx機能を使うことで、スケールの異なるデータを1つのグラフに表示できることがわかりました。この手法はデータ間の関係性を視覚的に把握したい場合に特に有効です。
参考
matplotlib.axes.Axes.twinx — Matplotlib 3.1.0 documentation
Specifying Colors — Matplotlib 2.0.2 documentation
コメント