Changeset 50 for trunk/GSASIIplot.py


Ignore:
Timestamp:
Apr 21, 2010 10:55:25 AM (13 years ago)
Author:
vondreel
Message:

fix graphics zoom, redraw, home issues
now OK for powder, single crystal, image & transformed image plots

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIplot.py

    r49 r50  
    5656        return page.figure
    5757       
    58 def PlotSngl(self):
     58def PlotSngl(self,newPlot=False):
    5959    from matplotlib.patches import Circle
    6060
     
    9999        plotNum = self.G2plotNB.plotList.index('Structure Factors')
    100100        snglPage = self.G2plotNB.nb.GetPage(plotNum)
    101         snglPlot = snglPage.figure.gca()
    102         snglPlot.cla()
     101        if not newPlot:
     102            snglPlot = snglPage.figure.gca()          #get previous powder plot & get limits
     103            xylim = snglPlot.get_xlim(),snglPlot.get_ylim()
     104        snglPage.figure.clf()
     105        snglPlot = snglPage.figure.gca()          #get a fresh plot after clf()
    103106    except ValueError,error:
    104107        snglPlot = self.G2plotNB.add('Structure Factors').gca()
     
    164167    snglPlot.set_xlim((HKLmin[pzone[izone][0]],HKLmax[pzone[izone][0]]))
    165168    snglPlot.set_ylim((HKLmin[pzone[izone][1]],HKLmax[pzone[izone][1]]))
    166     snglPage.canvas.draw()
     169    if not newPlot:
     170        snglPage.toolbar.push_current()
     171        snglPlot.set_xlim(xylim[0])
     172        snglPlot.set_ylim(xylim[1])
     173        xylim = []
     174        snglPage.toolbar.push_current()
     175        snglPage.toolbar.draw()
     176    else:
     177        snglPage.canvas.draw()
    167178       
    168 def PlotImage(self):
     179def PlotImage(self,newPlot=False):
    169180    from matplotlib.patches import Ellipse,Arc
    170181
     
    172183        imgPage.canvas.SetToolTipString('')
    173184        size = len(self.ImageZ)
    174         if (xlim[0] < event.xdata < xlim[1]) & (ylim[0] > event.ydata > ylim[1]):
     185        if event.xdata and event.ydata:                 #avoid out of frame errors
    175186            Data = self.PatternTree.GetItemPyData( \
    176187                G2gd.GetPatternTreeItemId(self,self.Image, 'Image Controls'))
     
    287298        plotNum = self.G2plotNB.plotList.index('2D Powder Image')
    288299        imgPage = self.G2plotNB.nb.GetPage(plotNum)
     300        if not newPlot:
     301            imgPlot = imgPage.figure.gca()          #get previous powder plot & get limits
     302            xylim = imgPlot.get_xlim(),imgPlot.get_ylim()
    289303        imgPage.figure.clf()
    290         imgPlot = imgPage.figure.gca()
    291         if imgPage.views:
    292             imgPage.toolbar._views = copy.deepcopy(imgPage.views)
    293         view = imgPage.toolbar._views.forward()
     304        imgPlot = imgPage.figure.gca()          #get a fresh plot after clf()
    294305       
    295306    except ValueError,error:
     
    301312        imgPage.canvas.mpl_connect('pick_event', OnImPick)
    302313        imgPage.canvas.mpl_connect('button_release_event', OnImRelease)
    303         imgPage.views = False
    304         view = False
    305314    imgPage.SetFocus()
    306315       
     
    319328    xlim = (-0.5,Xmax-.5)
    320329    ylim = (Xmax-.5,-0.5,)
    321     if self.Img:
    322         xlim = self.Img.axes.get_xlim()
    323         ylim = self.Img.axes.get_ylim()
    324330    Imin,Imax = Data['range'][1]
    325331    acolor = mpl.cm.get_cmap(Data['color'])
     
    330336    self.Img = imgPlot.imshow(A,aspect='equal',cmap=acolor, \
    331337        interpolation='nearest',vmin=Imin,vmax=Imax,extent=[0,Xmax,Xmax,0])
     338
    332339    imgPlot.plot(xcent,ycent,'x')
    333340    if Data['showLines']:
     
    371378        imgPlot.text(cent[0],cent[1],'+',color=col,ha='center',va='center')
    372379    colorBar = imgPage.figure.colorbar(self.Img)
    373     if view:
    374         self.Img.axes.set_xlim(view[0][:2])
    375         self.Img.axes.set_ylim(view[0][2:])
     380    imgPlot.set_xlim(xlim)
     381    imgPlot.set_ylim(ylim)
     382    if not newPlot:
     383        imgPage.toolbar.push_current()
     384        imgPlot.set_xlim(xylim[0])
     385        imgPlot.set_ylim(xylim[1])
     386        xylim = []
     387        imgPage.toolbar.push_current()
     388        imgPage.toolbar.draw()
    376389    else:
    377         self.Img.axes.set_xlim(xlim)
    378         self.Img.axes.set_ylim(ylim)
    379     imgPage.canvas.draw()
     390        imgPage.canvas.draw()
    380391           
    381392def PlotPeakWidths(self):
     
    531542        if xpos:                                        #avoid out of frame mouse position
    532543            ypos = event.ydata
    533             wave = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'Instrument Parameters'))[0][1]
     544            wave = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self, \
     545            PatternId, 'Instrument Parameters'))[0][1]
    534546            dsp = 0.0
    535547            if abs(xpos) > 0.:
     
    719731
    720732
    721 def PlotTRImage(self):
     733def PlotTRImage(self,newPlot=False):
    722734           
    723735    def OnMotion(event):
    724         trimgPage.canvas.SetToolTipString('')
    725         trimgPage.canvas.SetCursor(wx.CROSS_CURSOR)
     736        Page.canvas.SetToolTipString('')
     737        Page.canvas.SetCursor(wx.CROSS_CURSOR)
    726738        azm = event.xdata
    727739        tth = event.ydata
     
    771783    try:
    772784        plotNum = self.G2plotNB.plotList.index('2D Transformed Powder Image')
    773         trimgPage = self.G2plotNB.nb.GetPage(plotNum)
    774         trimgPage.figure.clf()
    775         trimgPlot = trimgPage.figure.gca()
    776         if trimgPage.views:
    777             trimgPage.toolbar._views = copy.deepcopy(trimgPage.views)
    778         view = trimgPage.toolbar._views.forward()
     785        Page = self.G2plotNB.nb.GetPage(plotNum)
     786        if not newPlot:
     787            Plot = Page.figure.gca()          #get previous plot & get limits
     788            xylim = Plot.get_xlim(),Plot.get_ylim()
     789        Page.figure.clf()
     790        Plot = Page.figure.gca()          #get a fresh plot after clf()
    779791       
    780792    except ValueError,error:
    781         trimgPlot = self.G2plotNB.add('2D Transformed Powder Image').gca()
     793        Plot = self.G2plotNB.add('2D Transformed Powder Image').gca()
    782794        plotNum = self.G2plotNB.plotList.index('2D Transformed Powder Image')
    783         trimgPage = self.G2plotNB.nb.GetPage(plotNum)
    784         trimgPage.canvas.mpl_connect('motion_notify_event', OnMotion)
    785         trimgPage.canvas.mpl_connect('pick_event', OnPick)
    786         trimgPage.canvas.mpl_connect('button_release_event', OnRelease)
    787         trimgPage.views = False
     795        Page = self.G2plotNB.nb.GetPage(plotNum)
     796        Page.canvas.mpl_connect('motion_notify_event', OnMotion)
     797        Page.canvas.mpl_connect('pick_event', OnPick)
     798        Page.canvas.mpl_connect('button_release_event', OnRelease)
     799        Page.views = False
    788800        view = False
    789     trimgPage.SetFocus()
     801    Page.SetFocus()
    790802       
    791803    data = self.PatternTree.GetItemPyData(self.PickId)
     
    796808    V = np.arange(Imin,Imax,step)
    797809    acolor = mpl.cm.get_cmap('Paired')
    798     trimgPlot.set_xlabel('azimuth',fontsize=12)
    799     trimgPlot.set_ylabel('2-theta',fontsize=12)
    800     trimgPlot.contour(self.TA[1],self.TA[0],image,V,cmap=acolor)
     810    Plot.set_xlabel('azimuth',fontsize=12)
     811    Plot.set_ylabel('2-theta',fontsize=12)
     812    Plot.contour(self.TA[1],self.TA[0],image,V,cmap=acolor)
    801813    if data['showLines']:
    802814        IOtth = data['IOtth']
    803815        LRAzim = data['LRazimuth']                  #NB: integers
    804         trimgPlot.plot([LRAzim[0],LRAzim[1]],[IOtth[0],IOtth[0]],picker=True)
    805         trimgPlot.plot([LRAzim[0],LRAzim[1]],[IOtth[1],IOtth[1]],picker=True)
    806         trimgPlot.plot([LRAzim[0],LRAzim[0]],[IOtth[0],IOtth[1]],picker=True)
    807         trimgPlot.plot([LRAzim[1],LRAzim[1]],[IOtth[0],IOtth[1]],picker=True)
    808     trimgPage.canvas.draw()
     816        Plot.plot([LRAzim[0],LRAzim[1]],[IOtth[0],IOtth[0]],picker=True)
     817        Plot.plot([LRAzim[0],LRAzim[1]],[IOtth[1],IOtth[1]],picker=True)
     818        Plot.plot([LRAzim[0],LRAzim[0]],[IOtth[0],IOtth[1]],picker=True)
     819        Plot.plot([LRAzim[1],LRAzim[1]],[IOtth[0],IOtth[1]],picker=True)
     820    if not newPlot:
     821        Page.toolbar.push_current()
     822        Plot.set_xlim(xylim[0])
     823        Plot.set_ylim(xylim[1])
     824        xylim = []
     825        Page.toolbar.push_current()
     826        Page.toolbar.draw()
     827    else:
     828        Page.canvas.draw()
    809829           
    810830 
Note: See TracChangeset for help on using the changeset viewer.