class diFFit1DPanel(wx.Panel): ''' Panel for housing 1D XRD ''' def __init__(self,parent,owner=None,_larch=None,size=(500, 100)): wx.Panel.__init__(self, parent) self.owner = owner vbox = wx.BoxSizer(wx.VERTICAL) self.plot1D = PlotPanel(self,size=size,messenger=self.owner.write_message) vbox.Add(self.plot1D,proportion=1,flag=wx.ALL|wx.EXPAND,border = 10) self.SetSizer(vbox) self.plot1D.cursor_callback = self.on_cursor def on_cursor(self,x=None, y=None, **kw): xi = self.owner.xaxis_type.GetSelection() if xi == 1: self.owner.twth = x else: ix = np.abs(self.owner.data1dxrd[1]-self.owner.twth).argmin() self.owner.twth = self.owner.data1dxrd[1][ix] self.owner.xrd1Dviewer.plot_line(x=x) self.owner.xrd2Dviewer.plot_ring() self.owner.xrd2Dcake.plot_line() def plot_line(self,x=None): if x is None: xi = self.owner.xaxis_type.GetSelection() if xi != 1: ix = np.abs(self.owner.data1dxrd[1]-self.owner.twth).argmin() x = self.owner.data1dxrd[xi][ix] else: x = self.owner.twth try: self.xrd_line.remove() except: pass self.xrd_line = self.plot1D.axes.axvline(x=x, color='r', linewidth=1) self.plot1D.draw()