matplotlibに単純なマウスクリックイベントを実装しようとしています。図をプロットしてから、マウスを使用して積分の下限と上限を選択します。これまでのところ、座標を画面に出力することはできますが、後でプログラムで使用するために保存することはできません。2回目のマウスクリック後、Figureへの接続を終了します。
以下は、現在座標をプロットしてから出力するコードです。
私の質問:
座標を図からリストに保存するにはどうすればよいですか?つまり、クリック= [xpos、ypos]
行のそのセクションで単純な統合を行うために2セットのx座標を取得することは可能ですか?
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-10,10)
y = x**2
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x,y)
def onclick(event):
global ix, iy
ix, iy = event.xdata, event.ydata
print 'x = %d, y = %d'%(
ix, iy)
global coords
coords = [ix, iy]
return coords
for i in xrange(0,1):
cid = fig.canvas.mpl_connect('button_press_event', onclick)
plt.show()
イベントをイベントハンドラーに接続するには、mpl_connectを一度だけ呼び出す必要があります。切断するまでクリックイベントのリスニングを開始します。そして、あなたは使うことができます
fig.canvas.mpl_disconnect(cid)
イベントフックを切断します。
あなたがしたいことは次のようなものです:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-10,10)
y = x**2
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x,y)
coords = []
def onclick(event):
global ix, iy
ix, iy = event.xdata, event.ydata
print 'x = %d, y = %d'%(
ix, iy)
global coords
coords.append((ix, iy))
if len(coords) == 2:
fig.canvas.mpl_disconnect(cid)
return coords
cid = fig.canvas.mpl_connect('button_press_event', onclick)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加