Changeset f193585 in sasview for guitools/PlotPanel.py


Ignore:
Timestamp:
Apr 28, 2008 3:48:59 PM (16 years ago)
Author:
Gervaise Alina <gervyh@…>
Branches:
master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
6ed101a
Parents:
9e8dc22
Message:

some changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • guitools/PlotPanel.py

    r8035b82 rf193585  
    1010import transform 
    1111from canvas import FigureCanvas 
     12from matplotlib.widgets import RectangleSelector 
     13from pylab import  gca, gcf 
     14 
    1215#TODO: make the plottables interactive 
    1316 
     
    4952        sizer.Add(self.canvas,1,wx.EXPAND) 
    5053        self.SetSizer(sizer) 
    51  
     54         
    5255        # Graph object to manage the plottables 
    5356        self.graph = Graph() 
     
    8891        if len(list.keys())>0: 
    8992            first_item = list.keys()[0] 
    90             #print first_item, list[first_item].__class__.__name__ 
    9193            dlg = LinearFit( None, first_item, self.onFitDisplay,self.returnTrans, -1, 'Fitting') 
    9294            dlg.ShowModal()  
     
    172174         
    173175 
    174  
     176   
     177          
     178    def onselect(self,event1, event2): 
     179        print"went here" 
     180        from matplotlib.widgets import RectangleSelector 
     181        from pylab import  show, gca, gcf 
     182 
     183        'event1 and event2 are the press and release events' 
     184        x1, y1 = event1.xdata, event1.ydata 
     185        x2, y2 = event2.xdata, event2.ydata 
     186        print "(%3.2f, %3.2f) --> (%3.2f, %3.2f)"%(x1,y1,x2,y2) 
     187        print " The button you used were: ",event1.button, event2.button 
     188        gca().set_xlim([x1,x2]) 
     189        gca().set_ylim([y1,y2]) 
     190        gcf().canvas.draw_idle() 
     191        
     192        # drawtype is 'box' or 'line' or 'none' 
     193        LS = RectangleSelector(self.subplot, onselect,drawtype='box',useblit=True) 
     194        show() 
     195 
     196 
     197 
     198         
    175199    def onSaveImage(self, evt): 
    176200        #figure.savefig 
     
    241265        self.subplot.clear() 
    242266        self.subplot.hold(True) 
    243  
    244  
     267         
    245268    def render(self): 
    246269        """Commit the plot after all objects are drawn""" 
     
    330353        list =[] 
    331354        list = self.graph.returnPlottable() 
     355         
    332356        for item in list: 
     357            item.getTransform(self.xscales,self.yscales) 
    333358            if ( self.xscales=="x" ): 
    334                 item.transform_x( transform.toX,transform.errToX ) 
     359                item.returnTransformationx(transform.toX,transform.errToX) 
     360                 
    335361                self.set_xscale("linear") 
    336362                name, units = item.get_xaxis() 
     
    338364                 
    339365            if ( self.xscales=="x^(2)" ): 
    340                 item.transform_x( transform.toX2,transform.errToX2 ) 
     366                item.returnTransformationx(transform.toX2,transform.errToX2) 
    341367                self.set_xscale('linear') 
    342368                name, units = item.get_xaxis() 
     
    344370                 
    345371            if (self.xscales=="log10(x)" ): 
    346                 item.transform_x( transform.toX, transform.errToX ) 
     372                item.returnTransformationx(transform.toX,transform.errToX) 
    347373                self.set_xscale("log") 
    348                 name, units = item.get_xaxis() 
    349                 item.check_data_PlottableX()  
     374                name, units = item.get_xaxis()  
    350375                self.graph.xaxis("Log10 %s" % name,  "%s^{-1}" % units) 
    351376                 
    352377            if ( self.yscales=="ln(y)" ): 
    353                 item.transform_y( transform.toLogX, transform.errToLogX ) 
    354                 self.set_yscale("linear") 
    355                 name, units = item.get_yaxis() 
     378                item.returnTransformationy(transform.toLogX,transform.errToLogX) 
     379                self.set_yscale("linear") 
     380                name, units = item.get_yaxis() 
     381                item.check_data_PlottableY()  
    356382                self.graph.yaxis("log %s" % name,  "%s^{-1}" % units) 
    357383                 
    358384            if ( self.yscales=="y" ): 
    359                 item.transform_y( transform.toX, transform.errToX ) 
     385                item.returnTransformationy(transform.toX,transform.errToX) 
    360386                self.set_yscale("linear") 
    361387                name, units = item.get_yaxis() 
     
    363389                 
    364390            if ( self.yscales=="log10(y)" ):  
    365                 item.transform_y( transform.toX, transform.errToLogX) 
     391                item.returnTransformationy(transform.toX,transform.errToX) 
     392                item.check_data_PlottableY()  
    366393                self.set_yscale("log")   
    367394                name, units = item.get_yaxis() 
     395                self.graph.yaxis("Log10 %s" % name,  "%s^{-1}" % units) 
     396                 
     397            if ( self.yscales=="y^(2)" ): 
     398                item.returnTransformationy( transform.toX2,transform.errToX2 )     
     399                self.set_yscale("linear") 
     400                name, units = item.get_yaxis() 
     401                self.graph.yaxis("%s^2" % name,  "%s^{-2}" % units) 
     402                 
     403            if ( self.yscales =="1/y"): 
     404                item.returnTransformationy(transform.toOneOverX,transform.errOneOverX ) 
     405                self.set_yscale("linear") 
     406                name, units = item.get_yaxis() 
     407                self.graph.yaxis("%s" % name,  "%s" % units) 
     408                 
     409            if ( self.yscales =="1/sqrt(y)" ): 
     410                item.returnTransformationy(transform.toOneOverSqrtX,transform.errOneOverSqrtX ) 
     411                self.set_yscale("linear") 
     412                name, units = item.get_yaxis() 
    368413                item.check_data_PlottableY()  
    369                 self.graph.yaxis("Log10 %s" % name,  "%s^{-1}" % units) 
    370                  
    371             if ( self.yscales=="y^(2)" ): 
    372                 item.transform_y( transform.toX2, transform.errToX2 )     
    373                 self.set_yscale("linear") 
    374                 name, units = item.get_yaxis() 
    375                 self.graph.yaxis("%s^2" % name,  "%s^{-2}" % units) 
    376                  
    377             if ( self.yscales =="1/y"): 
    378                 item.transform_y( transform.toOneOverX , transform.errOneOverX ) 
    379                 self.set_yscale("linear") 
    380                 name, units = item.get_yaxis() 
    381                 self.graph.yaxis("%s" % name,  "%s" % units) 
    382                  
    383             if ( self.yscales =="1/sqrt(y)" ): 
    384                 item.transform_y( transform.toOneOverSqrtX ,transform.errOneOverSqrtX ) 
    385                 self.set_yscale("linear") 
    386                 name, units = item.get_yaxis() 
    387414                self.graph.yaxis("%s" %name,  "%s" % units) 
    388415                 
    389416            if ( self.yscales =="ln(y*x)"): 
    390                 item.transform_y( transform.toLogXY ,transform.errToLogXY ) 
     417                item.returnTransformationy( transform.toLogXY,transform.errToLogXY) 
    391418                self.set_yscale("linear") 
    392419                yname, yunits = item.get_yaxis() 
     
    395422                 
    396423            if ( self.yscales =="ln(y*x^(2))"): 
    397                 item.transform_y( transform.toLogYX2 ,transform.errToLogYX2 ) 
     424                item.returnTransformationy( transform.toLogYX2,transform.errToLogYX2) 
    398425                self.set_yscale("linear") 
    399426                yname, yunits = item.get_yaxis() 
    400427                xname, xunits = item.get_xaxis() 
     428                item.check_data_PlottableY()  
    401429                self.graph.yaxis("Log %s%s^{2}" % (yname,xname),  "%s^{-1}%s^{-2}" % (yunits,xunits)) 
    402430             
    403431            if ( self.yscales =="ln(y*x^(4))"): 
    404                 item.transform_y( transform.toLogYX4 ,transform.errToLogYX4 ) 
     432                item.returnTransformationy(transform.toLogYX4,transform.errToLogYX4) 
    405433                self.set_yscale("linear") 
    406434                yname, yunits = item.get_yaxis() 
     
    409437             
    410438            if ( self.viewModel == "Guinier lny vs x^(2)"): 
    411                  
    412                 item.transform_x( transform.toX2,transform.errToX2 ) 
     439                item.returnTransformationx(transform.toX2,transform.errToX2) 
    413440                self.set_xscale('linear') 
    414441                name, units = item.get_xaxis() 
    415442                self.graph.xaxis("%s^{2}" % name,  "%s^{-2}" % units) 
    416                  
    417                 item.transform_y( transform.toLogX, transform.errToLogX ) 
     443                item.returnTransformationy(transform.toLogX,transform.errToLogX ) 
    418444                self.set_yscale("linear") 
    419445                name, units = item.get_yaxis() 
    420446                self.graph.yaxis("$Log %s$" % name,  "%s^{-1}" % units) 
     447                 
    421448        #item.name = self.yscales+" vs " +self.xscales       
    422449        self.prevXtrans = self.xscales  
    423450        self.prevYtrans = self.yscales   
    424          
     451        item.transformView() 
    425452        self.graph.render(self) 
    426453        self.subplot.figure.canvas.draw_idle() 
    427454         
    428     def onFitDisplay(self, plottable,xmin,xmax): 
     455    def onFitDisplay(self, plottable): 
    429456        """ 
    430457            Add a new plottable into the graph .In this case this plottable will be used  
     
    432459            @param plottable: the plottable to plot 
    433460        """ 
    434         list =[] 
    435         tempx=[] 
    436         tempy=[] 
    437         tempdx=[] 
    438         tempdy=[] 
    439         #Stored plotted plottable in a new plottable  
    440         list = self.graph.returnPlottable() 
    441         if len(list.keys())>0: 
    442             for item in list: 
    443                 if self.graph.isPlotted(item)== True: 
    444                     x,y,dx,dy = item.returnValuesOfView() 
    445                     if((min(x) < xmin )and( max(x) > xmax ))\ 
    446                         or ((min(x) <= xmin )and( max(x) > xmax ))\ 
    447                         or((min(x) < xmin )and( max(x) >= xmax )): 
    448                         print"went here" 
    449                         item.reducedXrange(xmin,xmax) 
    450                     else: 
    451                          item.originalXrange() 
    452              
    453          
    454461        #Add the data to fit  
    455         plottable.reset_view() 
     462        
    456463        self.graph.add(plottable) 
    457464        self.graph.render(self) 
     
    459466        self.subplot.figure.canvas.draw_idle() 
    460467        self.graph.delete(plottable) 
    461      
    462        
    463      
    464      
     468    
     469 
     470         
    465471class NoRepaintCanvas(FigureCanvasWxAgg): 
    466472    """We subclass FigureCanvasWxAgg, overriding the _onPaint method, so that 
Note: See TracChangeset for help on using the changeset viewer.