如何在SpanSelector中区分左右按钮?

时间:2019-04-05 19:38:14

标签: python matplotlib widget mouse interactive

我想使用SpanSelector选择图中的两个间隔。为了保存间隔的不同极值,我想根据是否使用向右或向左按钮选择间隔来使用标记(这样我就可以区分两个想要的间隔)。

以上可能吗?


编辑:

更具体地说:我希望一旦显示了绘图,SpanSelector如果通过左键完成绘制红色区域,如果通过右键完成绘制蓝色区域。

>

示例:

下面的代码使用户可以交互式地选择一个间隔,然后打印该间隔

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.widgets as mwidgets  

fig = plt.figure() 
ax = plt.axes() 
x = np.arange(0,2*np.pi)  
y = np.sin(x) 
ax.plot(x,y) 

def onselect(vmin, vmax):
    print(vmin, vmax)

span = mwidgets.SpanSelector(ax, onselect, 'horizontal') 

plt.show()                                                               

我想修改上面的代码,以便如果用左键绘制间隔,则打印"LEFT: vimin, vmax",如果用右键绘制间隔,则打印{{1 }}。

以上可能吗?

2 个答案:

答案 0 :(得分:1)

SpanSelector(..., button=1)

将是鼠标左键的范围选择器,并且

SpanSelector(..., button=3)

将是鼠标右键的跨度选择器。

答案 1 :(得分:0)

我用mpl_connect解决了。我没有区分左键单击和右键单击,但是我让代码以不同的方式对待SpanSelector输入,具体取决于鼠标选择的跨度之前是enter击键还是{{ 1}}击键。如果对他人有用,我将在下面的代码中保留。

shift+enter