""":copyright: The PyGLImER development team (makus@gfz-potsdam.de).:license: GNU Lesser General Public License, Version 3 (https://www.gnu.org/copyleft/lesser.html):author: Lucas Sawade (lsawade@princeton.edu)Last Update: June 19, 2020"""frommatplotlib.widgetsimportSlider
[docs]defset_sliderval_no_callback(slider:Slider,val):""" Set slider value to *val* Parameters ---------- val : float """xy=slider.poly.xyifslider.orientation=='vertical':xy[1]=0,valxy[2]=1,valelse:xy[2]=val,1xy[3]=val,0slider.poly.xy=xyslider.valtext.set_text(val)ifslider.drawon:slider.ax.figure.canvas.draw_idle()
'''class LineBuilder: def __init__(self, line): self.line = line self.xs = list(line.get_xdata()) self.ys = list(line.get_ydata()) self.cid = line.figure.canvas.mpl_connect('button_press_event', self) def __call__(self, event): print('click', event) if event.inaxes!=self.line.axes: return self.xs.append(event.xdata) self.ys.append(event.ydata) self.line.set_data(self.xs, self.ys) self.line.figure.canvas.draw()fig = plt.figure()ax = fig.add_subplot(111)ax.set_title('click to build line segments')line, = ax.plot([0], [0]) # empty linelinebuilder = LineBuilder(line)plt.show()def on_release(self, event): 'on release we reset the press data' self.press = None self.rect.figure.canvas.draw()def disconnect(self): 'disconnect all the stored connection ids' self.rect.figure.canvas.mpl_disconnect(self.cidpress) self.rect.figure.canvas.mpl_disconnect(self.cidrelease) self.rect.figure.canvas.mpl_disconnect(self.cidmotion)fig = plt.figure()ax = fig.add_subplot(111)rects = ax.bar(range(10), 20*np.random.rand(10))drs = []for rect in rects: dr = DraggableRectangle(rect) dr.connect() drs.append(dr)plt.show()"""Illustrate the figure and axes enter and leave events by changing theframe colors on enter and leave"""import matplotlib.pyplot as pltdef enter_axes(event): print('enter_axes', event.inaxes) event.inaxes.patch.set_facecolor('yellow') event.canvas.draw()def leave_axes(event): print('leave_axes', event.inaxes) event.inaxes.patch.set_facecolor('white') event.canvas.draw()def enter_figure(event): print('enter_figure', event.canvas.figure) event.canvas.figure.patch.set_facecolor('red') event.canvas.draw()def leave_figure(event): print('leave_figure', event.canvas.figure) event.canvas.figure.patch.set_facecolor('grey') event.canvas.draw()fig1 = plt.figure()fig1.suptitle('mouse hover over figure or axes to trigger events')ax1 = fig1.add_subplot(211)ax2 = fig1.add_subplot(212)fig1.canvas.mpl_connect('figure_enter_event', enter_figure)fig1.canvas.mpl_connect('figure_leave_event', leave_figure)fig1.canvas.mpl_connect('axes_enter_event', enter_axes)fig1.canvas.mpl_connect('axes_leave_event', leave_axes)fig2 = plt.figure()fig2.suptitle('mouse hover over figure or axes to trigger events')ax1 = fig2.add_subplot(211)ax2 = fig2.add_subplot(212)fig2.canvas.mpl_connect('figure_enter_event', enter_figure)fig2.canvas.mpl_connect('figure_leave_event', leave_figure)fig2.canvas.mpl_connect('axes_enter_event', enter_axes)fig2.canvas.mpl_connect('axes_leave_event', leave_axes)plt.show()"""compute the mean and stddev of 100 data sets and plot mean vs. stddev.When you click on one of the mu, sigma points, plot the raw data fromthe dataset that generated the mean and stddev"""import numpy as npimport matplotlib.pyplot as pltX = np.random.rand(100, 1000)xs = np.mean(X, axis=1)ys = np.std(X, axis=1)fig = plt.figure()ax = fig.add_subplot(111)ax.set_title('click on point to plot time series')line, = ax.plot(xs, ys, 'o', picker=5) # 5 points tolerancedef onpick(event): if event.artist!=line: return True N = len(event.ind) if not N: return True figi = plt.figure() for subplotnum, dataind in enumerate(event.ind): ax = figi.add_subplot(N,1,subplotnum+1) ax.plot(X[dataind]) ax.text(0.05, 0.9, 'mu=%1.3f\nsigma=%1.3f'%(xs[dataind], ys[dataind]), transform=ax.transAxes, va='top') ax.set_ylim(-0.5, 1.5) figi.show() return Truefig.canvas.mpl_connect('pick_event', onpick)plt.show()'''