異なるスケールのプロットの作成

Beginner

This tutorial is from open-source community. Access the source code

はじめに

この実験では、Matplotlib を使って Python で異なるスケールのプロットを作成する方法を学びます。具体的には、同じ軸に異なる左と右のスケールを持つ 2 つのプロットを作成する方法を学びます。

VM のヒント

VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。

時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証は自動化できません。

学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。そうすれば、迅速に問題を解決します。

必要なライブラリをインポートする

始める前に、必要なライブラリをインポートしましょう。このチュートリアルでは Matplotlib と NumPy を使用します。

import matplotlib.pyplot as plt
import numpy as np

疑似データを作成する

次に、プロットに使用する疑似データを作成します。0.01 から 10.0 までの値の配列を 0.01 のステップで作成するためにnumpy.arangeを使用します。その後、numpy.expnumpy.sinを使用して 2 セットのデータを作成します。

## Create some mock data
t = np.arange(0.01, 10.0, 0.01)
data1 = np.exp(t)
data2 = np.sin(2 * np.pi * t)

プロットを作成する

データが用意できたので、プロットを作成しましょう。まず、matplotlib.pyplot.subplots()を使って軸オブジェクトを作成します。その後、この軸オブジェクトに最初のセットのデータをプロットし、ラベルの色を赤色に設定します。

fig, ax1 = plt.subplots()

color = 'tab:red'
ax1.set_xlabel('time (s)')
ax1.set_ylabel('exp', color=color)
ax1.plot(t, data1, color=color)
ax1.tick_params(axis='y', labelcolor=color)

次に、ax1.twinx()メソッドを使って、最初の軸オブジェクトと同じ x 軸を共有する 2 番目の軸オブジェクトをインスタンス化します。その後、この新しい軸オブジェクトに 2 番目のセットのデータをプロットし、ラベルの色を青色に設定します。

ax2 = ax1.twinx()

color = 'tab:blue'
ax2.set_ylabel('sin', color=color)
ax2.plot(t, data2, color=color)
ax2.tick_params(axis='y', labelcolor=color)

最後に、fig.tight_layout()メソッドを使ってプロットのレイアウトを調整し、matplotlib.pyplot.show()を使って表示します。

fig.tight_layout()
plt.show()

プロットを確認する

作成されたプロットを見直してみましょう。2 セットのデータが y 軸で異なるスケールを持っていることに注目してください。最初のセットのデータは赤色でプロットされ、プロットの左側にスケールがあります。一方、2 番目のセットのデータは青色でプロットされ、プロットの右側にスケールがあります。

まとめ

おめでとうございます!Matplotlib を使って Python で異なるスケールのプロットを作成する方法を学びました。具体的には、同じ x 軸を共有する 2 つの異なる軸を使って、同じ軸上に異なる左と右のスケールを持つ 2 つのプロットを作成する方法を学びました。2 つの軸は独立しているので、必要に応じて別々のmatplotlib.tickerフォーマッターとロケーターを使用できます。