matplotlibで描いたグラフ上の座標を取得する方法
matplotlibで描いたグラフの上で、マウスをクリックした位置の座標の値を取得したい。matplotlibでグラフを描くと、マウス位置の座標が画面の左下に自動的に表示されている(図1)。なので、座標の値を取得するのは可能なはず。
そこで、マニュアルの10章(Event handling and picking — Matplotlib 3.0.0 documentation)を見ると、次の例題が...。
import matplotlib.pyplot as plt import numpy as np fig = plt.figure() ax = fig.add_subplot(111) ax.plot(np.random.rand(10)) fig.show() def onclick(event): print 'button=%d, x=%d, y=%d, xdata=%f, ydata=%f' %( event.button, event.x, event.y, event.xdata, event.ydata) cid = fig.canvas.mpl_connect('button_press_event', onclick)
これで、マウスボタンを押した位置での以下の情報を取得できる。
event.button | 押されたマウスのボタン(左側から0, 1, 2の番号となる) |
event.x | canvasの左からのx座標(単位はピクセル) |
event.y | canvasの下からのy座標(単位はピクセル) |
event.xdata | 描いたグラフ上でのx座標 |
event.ydata | 描いたグラフ上でのy座標 |
実際に上のコードを実行し、マウスで適当な位置をクリックすると、これらの情報が表示される。canvas上であっても描いたグラフの外をクリックするとエラーになるが...。
ここで用いたbutton_press_eventの他に、使用可能なイベントがいくつかあるので、いろいろなことができそうだ。