Changeset cafa75f in sasview for src/sans/plottools/PlotPanel.py
- Timestamp:
- Apr 2, 2014 4:04:01 PM (11 years ago)
- 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:
- 1829835
- Parents:
- 6771d94
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sans/plottools/PlotPanel.py
reddb6ec rcafa75f 3 3 import logging 4 4 import wx 5 import os6 5 # Try a normal import first 7 6 # If it fails, try specifying a version … … 12 11 from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg 13 12 from matplotlib.figure import Figure 14 from sans.plottools import transform 15 from sans.plottools.plottables import Data1D 16 from sans.plottools.binder import BindArtist 13 import os 14 import transform 15 from plottables import Data1D 16 #TODO: make the plottables interactive 17 from binder import BindArtist 17 18 from matplotlib.font_manager import FontProperties 18 19 DEBUG = False 19 20 20 from sans.plottools.plottables import Graph 21 from sans.plottools.TextDialog import TextDialog 22 from sans.plottools.LabelDialog import LabelDialog 21 from plottables import Graph 22 from plottables import Text 23 from TextDialog import TextDialog 24 from LabelDialog import LabelDialog 23 25 import operator 24 26 … … 36 38 for a in obj.get_children(): show_tree(a, d+1) 37 39 38 from sans.plottools.unitConverter import UnitConvertion as convertUnit40 from unitConverter import UnitConvertion as convertUnit 39 41 40 42 41 43 def _rescale(lo, hi, step, pt=None, bal=None, scale='linear'): 42 """43 Rescale (lo,hi) by step, returning the new (lo,hi)44 The scaling is centered on pt, with positive values of step45 driving lo/hi away from pt and negative values pulling them in.46 If bal is given instead of point, it is already in [0,1] coordinates.44 """ 45 Rescale (lo,hi) by step, returning the new (lo,hi) 46 The scaling is centered on pt, with positive values of step 47 driving lo/hi away from pt and negative values pulling them in. 48 If bal is given instead of point, it is already in [0,1] coordinates. 47 49 48 This is a helper function for step-based zooming. 49 """ 50 # Convert values into the correct scale for a linear transformation 51 # TODO: use proper scale transformers 52 loprev = lo 53 hiprev = hi 54 if scale == 'log': 55 assert lo > 0 56 if lo > 0: 57 lo = math.log10(lo) 58 if hi > 0: 59 hi = math.log10(hi) 60 if pt is not None: 61 pt = math.log10(pt) 50 This is a helper function for step-based zooming. 51 52 """ 53 # Convert values into the correct scale for a linear transformation 54 # TODO: use proper scale transformers 55 loprev = lo 56 hiprev = hi 57 if scale == 'log': 58 assert lo > 0 59 if lo > 0: 60 lo = math.log10(lo) 61 if hi > 0: 62 hi = math.log10(hi) 63 if pt is not None: 64 pt = math.log10(pt) 65 66 # Compute delta from axis range * %, or 1-% if persent is negative 67 if step > 0: 68 delta = float(hi - lo) * step / 100 69 else: 70 delta = float(hi - lo) * step / (100 - step) 62 71 63 # Compute delta from axis range * %, or 1-% if present is negative 64 if step > 0: 65 delta = float(hi - lo) * step / 100 66 else: 67 delta = float(hi - lo) * step / (100 - step) 68 69 # Add scale factor proportionally to the lo and hi values, 70 # preserving the 71 # point under the mouse 72 if bal is None: 73 bal = float(pt - lo) / (hi - lo) 74 lo = lo - (bal * delta) 75 hi = hi + (1 - bal) * delta 76 77 # Convert transformed values back to the original scale 78 if scale == 'log': 79 if (lo <= -250) or (hi >= 250): 80 lo = loprev 81 hi = hiprev 82 else: 83 lo, hi = math.pow(10., lo), math.pow(10., hi) 84 return (lo, hi) 72 # Add scale factor proportionally to the lo and hi values, 73 # preserving the 74 # point under the mouse 75 if bal is None: 76 bal = float(pt - lo) / (hi - lo) 77 lo = lo - (bal * delta) 78 hi = hi + (1 - bal) * delta 79 80 # Convert transformed values back to the original scale 81 if scale == 'log': 82 if (lo <= -250) or (hi >= 250): 83 lo = loprev 84 hi = hiprev 85 else: 86 lo, hi = math.pow(10., lo), math.pow(10., hi) 87 return (lo, hi) 85 88 86 89 … … 122 125 self.figure = Figure(None, dpi, linewidth=2.0) 123 126 self.color = '#b3b3b3' 124 from sans.plottools.canvas import FigureCanvas127 from canvas import FigureCanvas 125 128 self.canvas = FigureCanvas(self, -1, self.figure) 126 129 self.SetColor(color) … … 155 158 156 159 # Define some constants 157 self.colorlist = ['b', 'g', 'r', 'c', 'm', 'y','k']158 self.symbollist = ['o', 'x', '^', 'v', '<', '>','+',159 's', 'd', 'D', 'h', 'H','p', '-']160 self.colorlist = ['b','g','r','c','m','y','k'] 161 self.symbollist = ['o','x','^','v','<','>','+', 162 's','d','D','h','H','p', '-'] 160 163 161 164 #List of texts currently on the plot … … 972 975 self.line_collections_list = handles2 973 976 self.legend = self.subplot.legend(handles2, labels2, 974 prop=FontProperties(size=10), numpoints=1,975 handletextsep=.05,loc=self.legendLoc)977 prop=FontProperties(size=10), 978 loc=self.legendLoc) 976 979 if self.legend != None: 977 980 self.legend.set_picker(self.legend_picker) … … 1003 1006 self.line_collections_list = handles2 1004 1007 self.legend = self.subplot.legend(handles2, labels2, 1005 prop=FontProperties(size=10), numpoints=1,1006 handletextsep=.05,loc=self.legendLoc)1008 prop=FontProperties(size=10), 1009 loc=self.legendLoc) 1007 1010 if self.legend != None: 1008 1011 self.legend.set_picker(self.legend_picker) … … 1103 1106 ## Set the view scale for all plots 1104 1107 self._onEVT_FUNC_PROPERTY(False) 1105 # Check if zoomed 1106 try: tb = self.toolbar.wx_ids['Back'] 1107 except AttributeError: tb = self.toolbar._NTB2_BACK # Cruft 1108 toolbar_zoomed = self.toolbar.GetToolEnabled(tb) 1109 1110 if self.is_zoomed or toolbar_zoomed: 1108 if self.is_zoomed: 1111 1109 # Recover the x,y limits 1112 1110 self.subplot.set_xlim((xlo, xhi)) 1113 1111 self.subplot.set_ylim((ylo, yhi)) 1112 1113 @property 1114 def is_zoomed(self): 1115 if hasattr(self.toolbar, "wx_ids"): 1116 back = self.toolbar.wx_ids['Back'] 1117 else: # CRUFT 1118 back = self.toolbar._NTB2_BACK 1119 toolbar_zoomed = self.toolbar.GetToolEnabled(back) 1120 return self._is_zoomed or toolbar_zoomed 1121 1122 @is_zoomed.setter 1123 def is_zoomed(self, value): 1124 self._is_zoomed = value 1114 1125 1115 1126 def _on_yaxis_label(self, event): … … 1259 1270 handles2, labels2 = zip(*hl) 1260 1271 self.line_collections_list = handles2 1261 try: 1262 self.legend = ax.legend(handles2, labels2, numpoints=1, 1272 self.legend = ax.legend(handles2, labels2, 1263 1273 prop=FontProperties(size=10), 1264 handletextsep=.05, loc=self.legendLoc) 1265 except TypeError: # Cruft 1266 # older MPL uses handletextsep instead of handletextpad 1267 self.legend = ax.legend(handles2, labels2, numpoints=1, 1268 prop=FontProperties(size=10), 1269 handletextsep=.05, loc=self.legendLoc) 1274 loc=self.legendLoc) 1270 1275 if self.legend != None: 1271 1276 self.legend.set_picker(self.legend_picker) … … 1274 1279 1275 1280 except: 1276 try: 1277 self.legend = ax.legend(prop=FontProperties(size=10), 1278 numpoints=1, handletextpad=.05, 1279 loc=self.legendLoc) 1280 except TypeError: # Cruft 1281 # older MPL uses handletextsep instead of handletextpad 1282 self.legend = ax.legend(prop=FontProperties(size=10), 1283 numpoints=1, handletextsep=.05, 1281 self.legend = ax.legend(prop=FontProperties(size=10), 1284 1282 loc=self.legendLoc) 1285 1283 … … 1894 1892 self.graph._yaxis_transformed("%s \ \ %s^{4}" % (yname, xname), 1895 1893 "%s%s" % (yunits, xunits)) 1896 if(self.viewModel == "Kratky y*x^(2) vs x"):1897 item.transformY(transform.toYX2, transform.errToYX2)1898 self.graph._yaxis_transformed("%s \ \ %s^{2}" % (yname, xname),1899 "%s%s" % (yunits, xunits))1900 1901 1894 item.transformView() 1902 1895 … … 1997 1990 self.graph.render(self) 1998 1991 self._onEVT_FUNC_PROPERTY(False) 1999 if self.is_zoomed: 2000 self.is_zoomed = False 1992 self.is_zoomed = False 2001 1993 self.toolbar.update() 2002 1994
Note: See TracChangeset
for help on using the changeset viewer.