Python
 Computer >> コンピューター >  >> プログラミング >> Python

Matplotlibで曲線グラフにカーソル(補助線・マーカー・座標表示)を追加する方法

Matplotlibの曲線にカーソルを追加する手順

Matplotlibで描画した曲線グラフに、マウスの動きに合わせて追従するカーソル(補助線・マーカー・座標表示)を追加すると、グラフ上の任意の点の値を直感的に確認できて非常に便利です。以下の手順で実装できます。

  1. 図のサイズを設定し、サブプロット間および周囲のパディング(余白)を調整します。
  2. NumPyを使用して ts のデータポイントを作成します。
  3. figureとサブプロットのセットを作成します。
  4. カーソルクラスのインスタンスを作成し、プロット上のカーソル位置を更新できるようにします。
  5. mouse_event 内で、マウスの現在位置におけるx・yのデータを取得します。
    • x・yデータポイントのインデックスを取得します。
    • x・yの位置を設定します。
    • テキストの位置を設定し、Aggバッファとマウスイベントを再描画します。
  6. plot() メソッドを使って ts のデータポイントをプロットします。
  7. 軸のプロパティを設定します。
  8. show() メソッドで図を表示します。

サンプルコード

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['figure.figsize'] = [7.50, 3.50]
plt.rcParams['figure.autolayout'] = True

class CursorClass(object):
    def __init__(self, ax, x, y):
        self.ax = ax
        self.ly = ax.axvline(color='yellow', alpha=0.5)
        self.marker, = ax.plot([0], [0], marker='o', color='red', zorder=3)
        self.x = x
        self.y = y
        self.txt = ax.text(0.7, 0.9, '')

    def mouse_event(self, event):
        if event.inaxes:
            x, y = event.xdata, event.ydata
            indx = np.searchsorted(self.x, [x])[0]
            x = self.x[indx]
            y = self.y[indx]
            self.ly.set_xdata(x)
            self.marker.set_data([x], [y])
            self.txt.set_text('x=%1.2f, y=%1.2f' % (x, y))
            self.txt.set_position((x, y))
            self.ax.figure.canvas.draw_idle()
        else:
            return

t = np.arange(0.0, 1.0, 0.01)
s = np.sin(2 * 2 * np.pi * t)

fig, ax = plt.subplots()

cursor = CursorClass(ax, t, s)
cid = plt.connect('motion_notify_event', cursor.mouse_event)

ax.plot(t, s, lw=2, color='green')
plt.axis([0, 1, -1, 1])

plt.show()

実行結果

このコードを実行してグラフ上でマウスを動かすと、半透明の黄色い縦線がカーソルのx位置に追従し、赤い丸のマーカーが曲線上の対応するデータポイントを示します。あわせて「x=値, y=値」の形式で、その地点の正確な座標がテキストとしてリアルタイムに表示されます。これにより、sin波などの曲線上の任意の位置にあるデータ値を簡単に読み取ることができます。

Matplotlibで曲線グラフにカーソル(補助線・マーカー・座標表示)を追加する方法Matplotlibで曲線グラフにカーソル(補助線・マーカー・座標表示)を追加する方法

  1. Matplotlibでpcolormeshをアニメーション化する方法【コード例付き解説】

    Matplotlibでpcolormesh(擬似カラープロット)をアニメーション化する方法を、具体的な手順とサンプルコード付きで解説します。 アニメーション化の基本的な流れ pcolormeshをアニメーションさせるには、以下の手順に従います。 figureオブジェクトとサブプロットを作成する numpyを使ってx、y、tのデータポイントを生成する meshgrid関数で座標ベクトルから座標行列(X3、Y3、T3)を作成する pcolormesh()メソッドを使って、不規則な矩形グリッド上に擬似カラープロットを描画する カラーバーをfigureに追加する FuncAnimationクラスを使

  2. Matplotlibでhist2dプロットにカラーバーを追加する方法

    Matplotlibのhist2dプロット(2次元ヒストグラム)にカラーバーを追加するには、colorbar()メソッドの引数にスカラーマッピング可能なオブジェクト(ScalarMappable)を渡します。 実装手順 NumPyを使ってxとyのデータポイントを作成します。 subplots()メソッドを使って、図とサブプロットを作成します。 hist2d()メソッドを使って、2次元ヒストグラムを描画します。 hist2dから返されるスカラーマッピングオブジェクトをもとに、colorbar()でカラーバーを作成します。 show()メソッドを使って、図を表示します。 コード例 import