Matplotlib における座標フォーマッタの変更

Beginner

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

はじめに

Matplotlib は、Python におけるデータ可視化に使用されるライブラリです。これは、さまざまな種類のプロット、グラフ、チャートを作成するための幅広いツールを提供します。Matplotlib の便利な機能の 1 つは、座標フォーマッタをカスタマイズする機能です。この実験では、Matplotlib の座標フォーマッタを変更して、与えられた x と y に対して最も近いピクセルの画像「z」値を報告する手順を学びます。

VM のヒント

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

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

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

必要なモジュールをインポートする

まず、必要なモジュールをインポートする必要があります。この場合、matplotlib.pyplotnumpy をインポートします。

import matplotlib.pyplot as plt
import numpy as np

ランダムな行列を作成する

次に、numpy を使ってランダムな行列を作成します。0 から 1 の間のランダムな値を持つ 5x3 の行列を作成するために、rand メソッドを使います。また、結果の再現性を保証するために、ランダムシードを設定します。

## Fixing random state for reproducibility
np.random.seed(19680801)

X = 10*np.random.rand(5, 3)

プロットを作成する

次に、Matplotlib の axes クラスの imshow メソッドを使って、行列のプロットを作成します。

fig, ax = plt.subplots()
ax.imshow(X)

座標フォーマッタを変更する

次に、座標フォーマッタを変更して、与えられた x と y に対して最も近いピクセルの画像「z」値を報告します。これは、~.axes.Axes.format_coord 関数をカスタマイズすることで達成できます。

def format_coord(x, y):
    col = round(x)
    row = round(y)
    nrows, ncols = X.shape
    if 0 <= col < ncols and 0 <= row < nrows:
        z = X[row, col]
        return f'x={x:1.4f}, y={y:1.4f}, z={z:1.4f}'
    else:
        return f'x={x:1.4f}, y={y:1.4f}'

ax.format_coord = format_coord

プロットを表示する

最後に、plt.show() メソッドを使ってプロットを表示します。

plt.show()

まとめ

この実験では、Matplotlib の座標フォーマッタを変更して、与えられた x と y に対して最も近いピクセルの画像「z」値を報告する方法を学びました。また、imshow メソッドを使ってランダムな行列のプロットを作成し、座標フォーマッタを変更するために ~.axes.Axes.format_coord 関数をカスタマイズする方法も学びました。