matplotlib LassoSelectorを使用して散布図からいくつかの点を選択し、選択した点のみの別の図を生成しようとしています。 2番目のプロットで別のmatplotlibウィジェットを使用しようとすると、動作しませんが、エラーや警告メッセージは表示されません。以下は、LassoSelectorとSpanSelectorを使用した最小限の例です。他のmatplotlibウィジェットで作成されたプロットにMatplotlibウィジェットを使用
他のウィジェットも試しました。ボタン・ウィジェットはボタンを表示しますが、ボタン・プレスのアクションは実行されません。
import numpy as np
from matplotlib.pyplot import *
from matplotlib.widgets import SpanSelector, LassoSelector
from matplotlib.path import Path
def onselect(verts):
global xys,data
#get indexes of selected points
path = Path(verts)
xysn = xys.get_offsets()
ind = np.nonzero([path.contains_point(xy) for xy in xysn])[0]
#plot the second figure
fig=figure(2)
ax=fig.add_subplot(111)
ax.hist(data[:,0][ind],10)
#this should be executed when SpanSelector is used
def action(min,max):
print min,max
#try to do SpanSelector (this fails)
span=SpanSelector(ax,action,'horizontal')
show()
#initialize a figure
fig=figure(1)
ax=fig.add_subplot(111)
#create data
data=np.array([[1,6], [4,8],[0,4],[4,2],[9,6],[10,8],[2,2],[5,5],[0,4],[4,5]])
#plot data
xys=ax.scatter(data[:,0],data[:,1])
#select point by drawing a path around them
lasso = LassoSelector(ax, onselect=onselect)
show()