華氏と摂氏の目盛り

PythonPythonBeginner
今すぐ練習

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

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験の目的は、左右の y 軸に 2 つの目盛りを表示する方法を示すことです。この例では、華氏と摂氏の目盛りを使用します。第 1 軸に応じて第 2 軸を更新するためのコールバックとしてクロージャ関数を使用します。

VM のヒント

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

場合によっては、Jupyter Notebook が読み込み完了するまで数秒待つ必要があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題が発生した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

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

まず、numpymatplotlib.pyplot ライブラリをインポートする必要があります。

import matplotlib.pyplot as plt
import numpy as np

華氏を摂氏に変換する関数を定義する

次に、華氏の温度を摂氏に変換する関数を定義します。

def fahrenheit2celsius(temp):
    """
    Returns temperature in Celsius given Fahrenheit temperature.
    """
    return (5. / 9.) * (temp - 32)

2 番目の軸を更新する関数を定義する

第 1 軸に応じて第 2 軸を更新するためのコールバックとして登録するためのクロージャ関数を定義します。

def convert_ax_c_to_celsius(ax_f):
    """
    Update second axis according to first axis.
    """
    y1, y2 = ax_f.get_ylim()
    ax_c.set_ylim(fahrenheit2celsius(y1), fahrenheit2celsius(y2))
    ax_c.figure.canvas.draw()

グラフを作成する

次に、matplotlib.pyplotsubplots() 関数を使って 2 つの y 軸付きのグラフを作成します。また、最初の軸の ylim_changed イベントを convert_ax_c_to_celsius() 関数に接続します。

fig, ax_f = plt.subplots()
ax_c = ax_f.twinx()

ax_f.callbacks.connect("ylim_changed", convert_ax_c_to_celsius)

データをプロットする

最初の軸の plot() 関数を使ってデータをプロットします。

ax_f.plot(np.linspace(-40, 120, 100))

軸の範囲とラベルを設定する

x 軸の範囲を (0, 100) に設定し、y 軸のラベルとタイトルを設定します。

ax_f.set_xlim(0, 100)
ax_f.set_title('Two scales: Fahrenheit and Celsius')
ax_f.set_ylabel('Fahrenheit')
ax_c.set_ylabel('Celsius')

グラフを表示する

最後に、matplotlib.pyplotshow() 関数を使ってグラフを表示します。

plt.show()

まとめ

この実験では、Python の Matplotlib を使って左右の y 軸に 2 つの目盛りを表示する方法を学びました。クロージャ関数を使ってコールバックとして登録し、最初の軸に応じて 2 番目の軸を更新しました。これは、異なる単位の 2 セットのデータをプロットしたい場合に便利です。