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

Matplotlibでマウスクリック時にポイントの座標を表示する方法

Matplotlibでは、マウスクリックイベントを活用することで、グラフ上の任意のポイントをクリックした際にその座標(x値・y値)を取得して表示できます。本記事では、button_press_eventイベントとmpl_connect()メソッドを組み合わせた具体的な実装方法を、コード例とともにわかりやすく解説します。

実装手順

  • 図のサイズを設定し、サブプロット間および周囲のパディング(余白)を調整します。

  • 新しい図を作成するか、既存の図をアクティブにします。

  • 関数mouse_eventをイベントbutton_press_eventにバインド(接続)します。

  • NumPyを使用してxとyのデータポイントを作成します。

  • plot()メソッドを使ってxとyのデータポイントをプロットします。

  • 図を表示するにはshow()メソッドを使用します。

コード例

import numpy as np
from matplotlib import pyplot as plt

plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

def mouse_event(event):
    print('x: {} and y: {}'.format(event.xdata, event.ydata))

fig = plt.figure()
cid = fig.canvas.mpl_connect('button_press_event', mouse_event)

x = np.linspace(-10, 10, 100)
y = np.sin(x)

plt.plot(x, y)

plt.show()

処理のポイント

このコードの核となるのは、fig.canvas.mpl_connect('button_press_event', mouse_event)の部分です。これにより、ユーザーが図上でマウスをクリックするたびに、登録したコールバック関数mouse_eventが自動的に呼び出されます。イベントオブジェクトが持つxdataydata属性には、クリックされた位置のデータ座標が格納されているため、それをそのまま出力すれば座標を確認できます。

出力結果

このコードを実行すると、以下のような正弦波グラフが表示されます。

Matplotlibでマウスクリック時にポイントの座標を表示する方法

グラフ上のさまざまな位置をクリックすると、クリックした各ポイントの座標がコンソールに表示されます。

x: -3.099305446290094 and y: -0.013811108549791173
x: -0.2865652183685867 and y: -0.2067543563498595
x: -3.0280968329249927 and y: -0.1844916739113902
x: -5.7696284474814 and y: 0.4240216460734405
x: -3.9182044999887626 and y: 0.6837529411889172

この手法を応用すれば、クリックした座標をアノテーションとしてグラフ上に描画したり、GUIアプリケーション内でインタラクティブなデータ選択機能を実装したりすることも可能です。データ分析や可視化ツールの開発において非常に便利なテクニックなので、ぜひ活用してみてください。

  1. Matplotlibでマウスクリックイベントの座標を取得・保存する方法

    Matplotlibでマウスクリック時の座標を記録したい場合は、「button_press_event」イベントを利用するのが最も簡単な方法です。この記事では、実際に動作するサンプルコードとともに、その手順をわかりやすく解説します。 実装の手順 図(figure)のサイズを設定し、サブプロット間および周囲の余白を調整します。 図とサブプロットを作成します。 0〜9の範囲で折れ線グラフを描画します。 onclick 関数を button_press_event イベントにバインドします。 イベントから取得した x 座標と y 座標を出力します。 show() メソッドで図を表示します。 サン

  2. matplotlib.pyplot.scatterのデフォルトの青色を取得する方法を解説

    matplotlibでscatter()メソッドを使って散布図を描くとき、色を指定しなければ点は自動的に青色(#1f77b4)で描画されます。この記事では、matplotlibのscatterプロットにおけるデフォルトの青色を実際に確認・取得する方法を、コード例とともにわかりやすく解説します。 デフォルトの青色とは matplotlibのデフォルトのカラーサイクル(C0)に含まれる最初の色が#1f77b4であり、これがscatterプロットで色を指定しない場合に使われる青色です。以下のサンプルコードでは、色を指定せずに描いた点と、16進数カラーコード「#1f77b4」を明示的に指定して描いた点