Changes in / [b94889a:040529d] in sasview
- Location:
- src/sas/qtgui
- Files:
-
- 3 deleted
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/qtgui/DataExplorer.py
ref01be4 r8548d739 410 410 raise AttributeError, msg 411 411 412 412 413 if plots and \ 413 414 hasattr(new_plot, 'data') and \ … … 764 765 data = GuiUtils.dataFromItem(model_item) 765 766 766 method_name = 'Plotter' 767 if isinstance(data, Data2D): 768 method_name='Plotter2D' 767 dimension = 1 if isinstance(data, Data1D) else 2 769 768 770 769 # TODO: Replace this with the proper MaskPlotPanel from plottools 771 new_plot = globals()[method_name](self, quickplot=True)772 new_plot.data = data770 new_plot = Plotter(self) 771 new_plot.data(data) 773 772 new_plot.plot(marker='o', linestyle='') 774 773 -
src/sas/qtgui/PlotHelper.py
- Property mode changed from 100644 to 100755
ref01be4 r8cb6cd6 28 28 Deletes an existing plot from the dictionary 29 29 """ 30 if plot_id in this._plots:31 30 assert 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 return this._plots[plot_id] if plot_id in this._plots else None 43 assert plot_id in this._plots 44 45 return this._plots[plot_id] 44 46 45 47 def idOfPlot(plot): -
src/sas/qtgui/Plotter.py
ref01be4 r31c5b58 10 10 from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar 11 11 import matplotlib.pyplot as plt 12 import matplotlib as mpl13 12 14 13 import sas.qtgui.PlotHelper as PlotHelper 15 from sas.qtgui.PlotterBase import PlotterBase16 14 17 class Plotter(PlotterBase): 18 def __init__(self, parent=None, quickplot=False): 19 super(Plotter, self).__init__(parent, quickplot=quickplot) 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()) 20 52 21 53 @property 22 54 def data(self): 55 """ data getter """ 23 56 return self._data 24 57 … … 27 60 """ data setter """ 28 61 self._data = value 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) 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) 33 85 34 86 def plot(self, marker=None, linestyle=None): … … 37 89 """ 38 90 # create an axis 39 ax = self. ax91 ax = self._ax 40 92 41 93 if marker == None: … … 46 98 47 99 # plot data with legend 48 ax.plot(self._data.x, self._data.y, marker=marker, linestyle=linestyle, label=self. title)100 ax.plot(self._data.x, self._data.y, marker=marker, linestyle=linestyle, label=self._title) 49 101 50 102 # Now add the legend with some customizations. 51 legend = ax.legend(loc=' upper right', shadow=True)103 legend = ax.legend(loc='lower left', shadow=True) 52 104 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) 105 ax.set_ylabel(self._ylabel) 106 ax.set_xlabel(self._xlabel) 58 107 59 108 ax.set_yscale('log') … … 63 112 self.canvas.draw() 64 113 114 def closeEvent(self, event): 115 """ 116 Overwrite the close event adding helper notification 117 """ 118 # Please remove me from your database. 119 PlotHelper.deletePlot(PlotHelper.idOfPlot(self)) 120 # Notify the listeners 121 self.parent.communicator.activeGraphsSignal.emit(PlotHelper.currentPlots()) 122 event.accept() 123 -
src/sas/qtgui/Plotter2D.py
ref01be4 r31c5b58 18 18 import sas.qtgui.PlotUtilities as PlotUtilities 19 19 import sas.qtgui.PlotHelper as PlotHelper 20 from sas.qtgui.PlotterBase import PlotterBase21 20 22 class Plotter2D(PlotterBase): 23 def __init__(self, parent=None, quickplot=False): 24 super(Plotter2D, self).__init__(parent, quickplot=quickplot) 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()) 25 63 26 64 @property … … 32 70 """ data setter """ 33 71 self._data = data 34 self. qx_data=data.qx_data35 self. qy_data=data.qy_data36 self. xmin=data.xmin37 self. xmax=data.xmax38 self. ymin=data.ymin39 self. ymax=data.ymax40 self. zmin=data.zmin41 self. zmax=data.zmax42 self. label=data.name43 self.x Label(xlabel="%s(%s)"%(data._xaxis, data._xunit))44 self.y Label(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) 45 83 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) 46 107 47 108 def plot(self, marker=None, linestyle=None): … … 49 110 Plot 2D self._data 50 111 """ 51 # create an axis object52 ax = self. ax112 # create an axis 113 ax = self._ax 53 114 54 115 # 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) 60 119 61 120 # 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) 63 122 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) 65 124 66 125 im = ax.imshow(output, 67 126 interpolation='nearest', 68 127 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)) 73 132 74 133 cbax = self.figure.add_axes([0.84, 0.2, 0.02, 0.7]) … … 79 138 # Schedule the draw for the next time the event loop is idle. 80 139 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.