座標系を使った Matplotlib グラフの注釈付け

PythonPythonBeginner
今すぐ練習

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

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

はじめに

Matplotlibは、ユーザーが様々な種類のグラフやチャートを作成できる強力な可視化ツールです。注釈は、Matplotlibの重要な機能であり、ユーザーがグラフにテキストや矢印を追加できるようにします。このチュートリアルでは、注釈に対して異なる座標系を使用する方法を学びます。

VMのヒント

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

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

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

ライブラリのインポート

最初のステップは、必要なライブラリをインポートすることです。グラフと注釈を作成するために、matplotlib.pyplot ライブラリを使用します。

import matplotlib.pyplot as plt
import numpy as np

データの作成

次に、描画するためのデータを作成します。サイン波を作成するために、numpy ライブラリを使用します。

x = np.arange(0, 10, 0.005)
y = np.exp(-x/2.) * np.sin(2*np.pi*x)

グラフの作成

次に、matplotlib.pyplot ライブラリを使ってグラフを作成します。グラフのx軸とy軸の範囲を設定した後、データを描画します。

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlim(0, 10)
ax.set_ylim(-1, 1)

座標の変換

次のステップは、データの座標と表示の座標を変換することです。データ座標を変換するために ax.transData メソッドを使い、表示座標を変換するために figure pixels 座標系を使います。

xdata, ydata = 5, 0
xdisplay, ydisplay = ax.transData.transform((xdata, ydata))

注釈の追加

最後のステップは、グラフに注釈を追加することです。グラフにテキストと矢印を追加するために ax.annotate メソッドを使います。また、注釈のスタイルを設定するために bboxarrowprops パラメータも使います。

bbox = dict(boxstyle="round", fc="0.8")
arrowprops = dict(
    arrowstyle="->",
    connectionstyle="angle,angleA=0,angleB=90,rad=10")

offset = 72
ax.annotate(
    f'data = ({xdata:.1f}, {ydata:.1f})',
    (xdata, ydata),
    xytext=(-2*offset, offset), textcoords='offset points',
    bbox=bbox, arrowprops=arrowprops)
ax.annotate(
    f'display = ({xdisplay:.1f}, {ydisplay:.1f})',
    xy=(xdisplay, ydisplay), xycoords='figure pixels',
    xytext=(0.5*offset, -offset), textcoords='offset points',
    bbox=bbox, arrowprops=arrowprops)

グラフの表示

最後のステップは、plt.show() メソッドを使ってグラフを表示することです。

plt.show()

まとめ

このチュートリアルでは、Matplotlibにおける注釈用のさまざまな座標系の使い方を学びました。グラフを作成し、データと表示座標を変換し、ax.annotate メソッドを使ってグラフに注釈を追加しました。注釈は、ユーザーがグラフにコンテキストや情報を追加できるMatplotlibの重要な機能です。