Python 在matplotlib中获取矩形选择的数据

Python 在matplotlib中获取矩形选择的数据,python,matplotlib,Python,Matplotlib,我试图理解matplotlib中矩形选择器的用法。基本上,我正在用imshow绘制一个二维数组,然后我想用鼠标选择一个矩形部分,并保存矩形的一角,以便稍后在脚本中使用。我阅读了matplotlib文档中使用的矩形选择器,但无法获取数据。 我现在所做的是 import matplotlib as mpl import bumpy as np from matplotlib.widgets import RectangleSelector # let z be my 2D array z=np.on

我试图理解matplotlib中矩形选择器的用法。基本上,我正在用imshow绘制一个二维数组,然后我想用鼠标选择一个矩形部分,并保存矩形的一角,以便稍后在脚本中使用。我阅读了matplotlib文档中使用的矩形选择器,但无法获取数据。 我现在所做的是

import matplotlib as mpl
import bumpy as np
from matplotlib.widgets import RectangleSelector
# let z be my 2D array
z=np.ones((100,1000))
def onselect(eclick, erelease):
  'eclick and erelease are matplotlib events at press and release'
   print ' startposition : (%f, %f)' % (eclick.xdata, eclick.ydata)
   print ' endposition   : (%f, %f)' % (erelease.xdata, erelease.ydata)
   print ' used button   : ', eclick.button

fig=mpl.pylab.figure()
ax=fig.add_subplot(111)
ax.imshow(z,aspect='auto',origin='lower',extent=((0,100,0,1000)))
toggle_selector.RS=RectangleSelector(ax,onselect,drawtype='box',useblit=True,button=[1,3])
现在,使用onselect函数,我打印出矩形的最小值和最大值的(x,y)坐标值。但我想存储这些值以供以后使用。
如何实现这一点?

我刚刚创建了几个全局变量,并将eclick.xdata、eclick.ydata、errease.xdata和errease.ydata的值存储在全局变量中

def onselect(eclick, erelease):
    global index
    global startpos
    global endpos
    print ' startposition : (%f, %f)' % (eclick.xdata, eclick.ydata)
    print ' endposition   : (%f, %f)' % (erelease.xdata, erelease.ydata)
    print ' used button   : ', eclick.button
    startpos[index] = [eclick.xdata, eclick.ydata]
    endpos[index]   = [erelease.xdata, erelease.ydata]

不确定这是否是“最佳”方法,但它确实有效:)

如果通读文档,您将发现返回的对象具有诸如区段、几何体之类的属性,其中包含有关选择的所有信息。我迟到了3年,但希望这能有所帮助。

为Navdeep的答案添加细节

rect_selection_coords = toggle_selector.RS.extents
print(rect_selection_coords)
x1, x2, y1, y2 = rect_selection_coords
其他属性可以在github/matplotlib/lib/matplotlib/widgets.py行2296中找到。

如何存储值(来自onselect()函数)以供以后使用。