[matplotlib] 34. スケールの異なるデータをまとめて表示するための2軸グラフ(twinx)

matplotlib

はじめに

この記事では、スケールの異なる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

コメント