- Timestamp:
- Dec 2, 2016 4:28:23 AM (8 years ago)
- 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
- Location:
- src/sas/qtgui
- Files:
-
- 3 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/qtgui/DataExplorer.py
r8548d739 ref01be4 410 410 raise AttributeError, msg 411 411 412 413 412 if plots and \ 414 413 hasattr(new_plot, 'data') and \ … … 765 764 data = GuiUtils.dataFromItem(model_item) 766 765 767 dimension = 1 if isinstance(data, Data1D) else 2 766 method_name = 'Plotter' 767 if isinstance(data, Data2D): 768 method_name='Plotter2D' 768 769 769 770 # TODO: Replace this with the proper MaskPlotPanel from plottools 770 new_plot = Plotter(self)771 new_plot.data (data)771 new_plot = globals()[method_name](self, quickplot=True) 772 new_plot.data = data 772 773 new_plot.plot(marker='o', linestyle='') 773 774 -
src/sas/qtgui/PlotHelper.py
- Property mode changed from 100755 to 100644
r8cb6cd6 ref01be4 28 28 Deletes an existing plot from the dictionary 29 29 """ 30 assert plot_id in this._plots31 del this._plots[plot_id]30 if plot_id in this._plots: 31 del this._plots[plot_id] 32 32 33 33 def currentPlots(): … … 41 41 Returns the plot referenced by the ID 42 42 """ 43 assert plot_id in this._plots 44 45 return this._plots[plot_id] 43 return this._plots[plot_id] if plot_id in this._plots else None 46 44 47 45 def idOfPlot(plot): -
src/sas/qtgui/Plotter.py
r31c5b58 ref01be4 10 10 from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar 11 11 import matplotlib.pyplot as plt 12 import matplotlib as mpl 12 13 13 14 import sas.qtgui.PlotHelper as PlotHelper 15 from sas.qtgui.PlotterBase import PlotterBase 14 16 15 class Plotter(QtGui.QDialog): 16 def __init__(self, parent=None): 17 super(Plotter, self).__init__(parent) 18 19 # Required for the communicator 20 self.parent = parent 21 22 # a figure instance to plot on 23 self.figure = plt.figure() 24 25 # this is the Canvas Widget that displays the `figure` 26 # it takes the `figure` instance as a parameter to __init__ 27 self.canvas = FigureCanvas(self.figure) 28 29 # this is the Navigation widget 30 # it takes the Canvas widget and a parent 31 self.toolbar = NavigationToolbar(self.canvas, self) 32 33 # set the layout 34 layout = QtGui.QVBoxLayout() 35 layout.addWidget(self.canvas) 36 layout.addWidget(self.toolbar) 37 self.setLayout(layout) 38 39 # defaults 40 self._current_plot = 111 41 self._data = [] 42 self._title = "Plot" 43 self._id = "" 44 self._xlabel = "X" 45 self._ylabel = "Y" 46 self._ax = self.figure.add_subplot(self._current_plot) 47 48 # Notify the helper 49 PlotHelper.addPlot(self) 50 # Notify the listeners 51 self.parent.communicator.activeGraphsSignal.emit(PlotHelper.currentPlots()) 17 class Plotter(PlotterBase): 18 def __init__(self, parent=None, quickplot=False): 19 super(Plotter, self).__init__(parent, quickplot=quickplot) 52 20 53 21 @property 54 22 def data(self): 55 """ data getter """56 23 return self._data 57 24 … … 60 27 """ data setter """ 61 28 self._data = value 62 63 def title(self, title=""): 64 """ title setter """ 65 self._title = title 66 67 def id(self, id=""): 68 """ id setter """ 69 self._id = id 70 71 def x_label(self, xlabel=""): 72 """ x-label setter """ 73 self._xlabel = xlabel 74 75 def y_label(self, ylabel=""): 76 """ y-label setter """ 77 self._ylabel = ylabel 78 79 def clean(self): 80 """ 81 Redraw the graph 82 """ 83 self.figure.delaxes(self._ax) 84 self._ax = self.figure.add_subplot(self._current_plot) 29 self.label=value.name 30 self.xLabel(xlabel="%s(%s)"%(value._xaxis, value._xunit)) 31 self.yLabel(ylabel="%s(%s)"%(value._yaxis, value._yunit)) 32 self.title(title=value.title) 85 33 86 34 def plot(self, marker=None, linestyle=None): … … 89 37 """ 90 38 # create an axis 91 ax = self. _ax39 ax = self.ax 92 40 93 41 if marker == None: … … 98 46 99 47 # plot data with legend 100 ax.plot(self._data.x, self._data.y, marker=marker, linestyle=linestyle, label=self. _title)48 ax.plot(self._data.x, self._data.y, marker=marker, linestyle=linestyle, label=self.title) 101 49 102 50 # Now add the legend with some customizations. 103 legend = ax.legend(loc=' lower left', shadow=True)51 legend = ax.legend(loc='upper right', shadow=True) 104 52 105 ax.set_ylabel(self._ylabel) 106 ax.set_xlabel(self._xlabel) 53 ax.set_ylabel(self.y_label) 54 ax.set_xlabel(self.x_label) 55 # Title only for regular charts 56 if not self.quickplot: 57 ax.set_title(label=self.title) 107 58 108 59 ax.set_yscale('log') … … 112 63 self.canvas.draw() 113 64 114 def closeEvent(self, event):115 """116 Overwrite the close event adding helper notification117 """118 # Please remove me from your database.119 PlotHelper.deletePlot(PlotHelper.idOfPlot(self))120 # Notify the listeners121 self.parent.communicator.activeGraphsSignal.emit(PlotHelper.currentPlots())122 event.accept()123 -
src/sas/qtgui/Plotter2D.py
r31c5b58 ref01be4 18 18 import sas.qtgui.PlotUtilities as PlotUtilities 19 19 import sas.qtgui.PlotHelper as PlotHelper 20 from sas.qtgui.PlotterBase import PlotterBase 20 21 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()) 22 class Plotter2D(PlotterBase): 23 def __init__(self, parent=None, quickplot=False): 24 super(Plotter2D, self).__init__(parent, quickplot=quickplot) 63 25 64 26 @property … … 70 32 """ data setter """ 71 33 self._data = data 72 self. _qx_data=data.qx_data73 self. _qy_data=data.qy_data74 self. _xmin=data.xmin75 self. _xmax=data.xmax76 self. _ymin=data.ymin77 self. _ymax=data.ymax78 self. _zmin=data.zmin79 self. _zmax=data.zmax80 self. _label=data.name81 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)) 83 45 self.title(title=data.title) 84 85 def title(self, title=""):86 """ title setter """87 self._title = title88 89 def id(self, id=""):90 """ id setter """91 self._id = id92 93 def x_label(self, xlabel=""):94 """ x-label setter """95 self._xlabel = r'$%s$'% xlabel96 97 def y_label(self, ylabel=""):98 """ y-label setter """99 self._ylabel = r'$%s$'% ylabel100 101 def clean(self):102 """103 Redraw the graph104 """105 self.figure.delaxes(self._ax)106 self._ax = self.figure.add_subplot(self._current_plot)107 46 108 47 def plot(self, marker=None, linestyle=None): … … 110 49 Plot 2D self._data 111 50 """ 112 # create an axis 113 ax = self. _ax51 # create an axis object 52 ax = self.ax 114 53 115 54 # 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) 119 60 120 61 # 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) 122 63 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) 124 65 125 66 im = ax.imshow(output, 126 67 interpolation='nearest', 127 68 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)) 132 73 133 74 cbax = self.figure.add_axes([0.84, 0.2, 0.02, 0.7]) … … 138 79 # Schedule the draw for the next time the event loop is idle. 139 80 self.canvas.draw_idle() 140 141 def closeEvent(self, event):142 """143 Overwrite the close event adding helper notification144 """145 # Please remove me from your database.146 PlotHelper.deletePlot(PlotHelper.idOfPlot(self))147 # Notify the listeners148 self.parent.communicator.activeGraphsSignal.emit(PlotHelper.currentPlots())149 event.accept()150
Note: See TracChangeset
for help on using the changeset viewer.