Matplotlib提供了自己的
RectangleSelector。matplotlib页面上有一个示例,您可以根据需要进行调整。
简化版本如下所示:
import matplotlib.pyplot as pltimport numpy as npfrom matplotlib.widgets import RectangleSelectorxdata = np.linspace(0,9*np.pi, num=301)ydata = np.sin(xdata)fig, ax = plt.subplots()line, = ax.plot(xdata, ydata)def line_select_callback(eclick, erelease): x1, y1 = eclick.xdata, eclick.ydata x2, y2 = erelease.xdata, erelease.ydata rect = plt.Rectangle( (min(x1,x2),min(y1,y2)), np.abs(x1-x2), np.abs(y1-y2) ) ax.add_patch(rect)rs = RectangleSelector(ax, line_select_callback, drawtype='box', useblit=False, button=[1], minspanx=5, minspany=5, spancoords='pixels', interactive=True)plt.show()



