Changeset ef01be4 in sasview for src/sas/qtgui/Plotter2D.py


Ignore:
Timestamp:
Dec 2, 2016 2:28:23 AM (8 years ago)
Author:
Piotr Rozyczko <rozyczko@…>
Branches:
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
Children:
b94889a
Parents:
ded2ce3
Message:

More context menu functionality in plots - SASVIEW-167

File:
1 edited

Legend:

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

    r31c5b58 ref01be4  
    1818import sas.qtgui.PlotUtilities as PlotUtilities 
    1919import sas.qtgui.PlotHelper as PlotHelper 
     20from sas.qtgui.PlotterBase import PlotterBase 
    2021 
    21 class 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()) 
     22class Plotter2D(PlotterBase): 
     23    def __init__(self, parent=None, quickplot=False): 
     24        super(Plotter2D, self).__init__(parent, quickplot=quickplot) 
    6325 
    6426    @property 
     
    7032        """ data setter """ 
    7133        self._data = data 
    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) 
     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)) 
    8345        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) 
    10746 
    10847    def plot(self, marker=None, linestyle=None): 
     
    11049        Plot 2D self._data 
    11150        """ 
    112         # create an axis 
    113         ax = self._ax 
     51        # create an axis object 
     52        ax = self.ax 
    11453 
    11554        # graph properties 
    116         ax.set_xlabel(self._xlabel) 
    117         ax.set_ylabel(self._ylabel) 
    118         ax.set_title(label=self._title) 
     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) 
    11960 
    12061        # Re-adjust colorbar 
    121         # self.figure.subplots_adjust(left=0.2, right=.8, bottom=.2) 
     62        self.figure.subplots_adjust(left=0.2, right=.8, bottom=.2) 
    12263 
    123         output = PlotUtilities.build_matrix(self._data.data, self._qx_data, self._qy_data) 
     64        output = PlotUtilities.build_matrix(self._data.data, self.qx_data, self.qy_data) 
    12465 
    12566        im = ax.imshow(output, 
    12667                       interpolation='nearest', 
    12768                       origin='lower', 
    128                        vmin=self._zmin, vmax=self._zmax, 
    129                        cmap=self._cmap, 
    130                        extent=(self._xmin, self._xmax, 
    131                                self._ymin, self._ymax)) 
     69                       vmin=self.zmin, vmax=self.zmax, 
     70                       cmap=self.cmap, 
     71                       extent=(self.xmin, self.xmax, 
     72                               self.ymin, self.ymax)) 
    13273 
    13374        cbax = self.figure.add_axes([0.84, 0.2, 0.02, 0.7]) 
     
    13879        # Schedule the draw for the next time the event loop is idle. 
    13980        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.