Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sas/qtgui/Plotter2D.py

    ref01be4 r31c5b58  
    1818import sas.qtgui.PlotUtilities as PlotUtilities 
    1919import sas.qtgui.PlotHelper as PlotHelper 
    20 from sas.qtgui.PlotterBase import PlotterBase 
    2120 
    22 class Plotter2D(PlotterBase): 
    23     def __init__(self, parent=None, quickplot=False): 
    24         super(Plotter2D, self).__init__(parent, quickplot=quickplot) 
     21class Plotter2D(QtGui.QDialog): 
     22    def __init__(self, parent=None): 
     23        super(Plotter2D, self).__init__(parent) 
     24 
     25        # Required for the communicator 
     26        self.parent = parent 
     27 
     28        # a figure instance to plot on 
     29        self.figure = plt.figure() 
     30 
     31        # this is the Canvas Widget that displays the `figure` 
     32        # it takes the `figure` instance as a parameter to __init__ 
     33        self.canvas = FigureCanvas(self.figure) 
     34 
     35        # this is the Navigation widget 
     36        # it takes the Canvas widget and a parent 
     37        self.toolbar = NavigationToolbar(self.canvas, self) 
     38 
     39        # set the layout 
     40        layout = QtGui.QVBoxLayout() 
     41        layout.addWidget(self.canvas) 
     42        layout.addWidget(self.toolbar) 
     43        self.setLayout(layout) 
     44 
     45        # defaults 
     46        self._current_plot = 111 
     47        self._data = [] 
     48        self._qx_data = [] 
     49        self._qy_data = [] 
     50        self._color=0 
     51        self._symbol=0 
     52        self._scale = 'linear' 
     53 
     54        # default color map 
     55        self._cmap = DEFAULT_CMAP 
     56 
     57        self._ax = self.figure.add_subplot(self._current_plot) 
     58 
     59        # Notify the helper 
     60        PlotHelper.addPlot(self) 
     61        # Notify the listeners 
     62        self.parent.communicator.activeGraphsSignal.emit(PlotHelper.currentPlots()) 
    2563 
    2664    @property 
     
    3270        """ data setter """ 
    3371        self._data = data 
    34         self.qx_data=data.qx_data 
    35         self.qy_data=data.qy_data 
    36         self.xmin=data.xmin 
    37         self.xmax=data.xmax 
    38         self.ymin=data.ymin 
    39         self.ymax=data.ymax 
    40         self.zmin=data.zmin 
    41         self.zmax=data.zmax 
    42         self.label=data.name 
    43         self.xLabel(xlabel="%s(%s)"%(data._xaxis, data._xunit)) 
    44         self.yLabel(ylabel="%s(%s)"%(data._yaxis, data._yunit)) 
     72        self._qx_data=data.qx_data 
     73        self._qy_data=data.qy_data 
     74        self._xmin=data.xmin 
     75        self._xmax=data.xmax 
     76        self._ymin=data.ymin 
     77        self._ymax=data.ymax 
     78        self._zmin=data.zmin 
     79        self._zmax=data.zmax 
     80        self._label=data.name 
     81        self.x_label(xlabel=data._xaxis + data._xunit) 
     82        self.y_label(ylabel=data._yaxis + data._yunit) 
    4583        self.title(title=data.title) 
     84 
     85    def title(self, title=""): 
     86        """ title setter """ 
     87        self._title = title 
     88 
     89    def id(self, id=""): 
     90        """ id setter """ 
     91        self._id = id 
     92 
     93    def x_label(self, xlabel=""): 
     94        """ x-label setter """ 
     95        self._xlabel = r'$%s$'% xlabel 
     96 
     97    def y_label(self, ylabel=""): 
     98        """ y-label setter """ 
     99        self._ylabel = r'$%s$'% ylabel 
     100 
     101    def clean(self): 
     102        """ 
     103        Redraw the graph 
     104        """ 
     105        self.figure.delaxes(self._ax) 
     106        self._ax = self.figure.add_subplot(self._current_plot) 
    46107 
    47108    def plot(self, marker=None, linestyle=None): 
     
    49110        Plot 2D self._data 
    50111        """ 
    51         # create an axis object 
    52         ax = self.ax 
     112        # create an axis 
     113        ax = self._ax 
    53114 
    54115        # graph properties 
    55         ax.set_xlabel(self.x_label) 
    56         ax.set_ylabel(self.y_label) 
    57         # Title only for regular charts 
    58         if not self.quickplot: 
    59             ax.set_title(label=self.title) 
     116        ax.set_xlabel(self._xlabel) 
     117        ax.set_ylabel(self._ylabel) 
     118        ax.set_title(label=self._title) 
    60119 
    61120        # Re-adjust colorbar 
    62         self.figure.subplots_adjust(left=0.2, right=.8, bottom=.2) 
     121        # self.figure.subplots_adjust(left=0.2, right=.8, bottom=.2) 
    63122 
    64         output = PlotUtilities.build_matrix(self._data.data, self.qx_data, self.qy_data) 
     123        output = PlotUtilities.build_matrix(self._data.data, self._qx_data, self._qy_data) 
    65124 
    66125        im = ax.imshow(output, 
    67126                       interpolation='nearest', 
    68127                       origin='lower', 
    69                        vmin=self.zmin, vmax=self.zmax, 
    70                        cmap=self.cmap, 
    71                        extent=(self.xmin, self.xmax, 
    72                                self.ymin, self.ymax)) 
     128                       vmin=self._zmin, vmax=self._zmax, 
     129                       cmap=self._cmap, 
     130                       extent=(self._xmin, self._xmax, 
     131                               self._ymin, self._ymax)) 
    73132 
    74133        cbax = self.figure.add_axes([0.84, 0.2, 0.02, 0.7]) 
     
    79138        # Schedule the draw for the next time the event loop is idle. 
    80139        self.canvas.draw_idle() 
     140 
     141    def closeEvent(self, event): 
     142        """ 
     143        Overwrite the close event adding helper notification 
     144        """ 
     145        # Please remove me from your database. 
     146        PlotHelper.deletePlot(PlotHelper.idOfPlot(self)) 
     147        # Notify the listeners 
     148        self.parent.communicator.activeGraphsSignal.emit(PlotHelper.currentPlots()) 
     149        event.accept() 
     150 
Note: See TracChangeset for help on using the changeset viewer.