[Yt-svn] yt-commit r481 - in trunk/yt: raven reason

mturk at wrangler.dreamhost.com mturk at wrangler.dreamhost.com
Fri May 16 15:58:27 PDT 2008


Author: mturk
Date: Fri May 16 15:58:26 2008
New Revision: 481
URL: http://yt.spacepope.org/changeset/481

Log:
Closes #77.  Can now set limits in phase plots (after moving to new profiles
this will be easier, but I am avoiding that at the moment) and you can switch
on and off logs in the slices.



Modified:
   trunk/yt/raven/PlotTypes.py
   trunk/yt/reason/Notebook.py

Modified: trunk/yt/raven/PlotTypes.py
==============================================================================
--- trunk/yt/raven/PlotTypes.py	(original)
+++ trunk/yt/raven/PlotTypes.py	Fri May 16 15:58:26 2008
@@ -195,6 +195,7 @@
 
 class VMPlot(RavenPlot):
     datalabel = None
+    colorbar = None
     def __init__(self, data, field, figure = None, axes = None,
                  use_colorbar = True, size=None):
         fields = ['X', 'Y', field, 'X width', 'Y width']
@@ -216,13 +217,22 @@
         self.__init_temp_image(use_colorbar)
 
     def __setup_from_field(self, field):
-        if field in lagos.log_fields or lagos.fieldInfo[field].take_log:
+        self.set_log_field(field in lagos.log_fields
+                           or lagos.fieldInfo[field].take_log)
+        self.axis_names["Z"] = field
+
+    def set_log_field(self, val):
+        if val:
             self.log_field = True
             self.norm = matplotlib.colors.LogNorm()
+            ttype = matplotlib.ticker.LogFormatter
         else:
             self.log_field = False
             self.norm = matplotlib.colors.Normalize()
-        self.axis_names["Z"] = field
+            ttype = matplotlib.ticker.ScalarFormatter
+        if self.colorbar:
+            self.colorbar.set_norm(self.norm)
+            self.colorbar.formatter = ttype()
 
     def __init_temp_image(self, setup_colorbar):
         temparray = na.ones(self.size)
@@ -288,6 +298,8 @@
         if self.cmap:
             self.image.set_cmap(self.cmap)
         if self.colorbar != None:
+            self.image.set_norm(self.norm)
+            self.colorbar.set_norm(self.norm)
             self.colorbar.notify(self.image)
         self.autoset_label()
 
@@ -342,17 +354,8 @@
         pass
 
     def switch_z(self, field):
-        if field in lagos.log_fields or lagos.fieldInfo[field].take_log:
-            self.log_field = True
-            self.norm = matplotlib.colors.LogNorm()
-            ttype = matplotlib.ticker.LogFormatter
-        else:
-            self.log_field = False
-            self.norm = matplotlib.colors.Normalize()
-            ttype = matplotlib.ticker.ScalarFormatter
-        if self.colorbar:
-            self.colorbar.set_norm(self.norm)
-            self.colorbar.formatter = ttype()
+        self.set_log_field(field in lagos.log_fields
+                           or lagos.fieldInfo[field].take_log)
         self.axis_names["Z"] = field
         self._redraw_image()
 
@@ -497,6 +500,12 @@
         if weight == "": weight=None
         self.weight = weight
 
+    def set_zlim(self, zmin, zmax):
+        self.norm.autoscale(na.array([zmin,zmax]))
+        self.image.changed()
+        if self.colorbar != None:
+            self.colorbar.notify(self.image)
+
     def _redraw_image(self):
         l, b, width, height = self._axes.bbox.get_bounds()
         self.pix = (width,height)

Modified: trunk/yt/reason/Notebook.py
==============================================================================
--- trunk/yt/reason/Notebook.py	(original)
+++ trunk/yt/reason/Notebook.py	Fri May 16 15:58:26 2008
@@ -245,7 +245,8 @@
 
     def ChangeLimits(self, zmin, zmax):
         self.plot.set_zlim(zmin,zmax)
-        self.UpdateCanvas()
+        self.figure_canvas.draw()
+        # We don't call update canvas
 
     def ChangeColorMapFromMessage(self, message):
         cmap = message.data
@@ -255,6 +256,7 @@
     def ChangeLimitsFromMessage(self, message):
         zmin, zmax = message.data
         self.ChangeLimits(zmin,zmax)
+        self.UpdateCanvas()
 
     def ChangeFieldFromMessage(self, message):
         pass
@@ -348,12 +350,15 @@
         velocities = self.popupmenu.AppendCheckItem(-1, "Show Velocities")
         velocities.Check(False)
         self.popupmenu.AppendSeparator()
+        self.take_log_menu = self.popupmenu.AppendCheckItem(-1, "Take Log")
+        self.take_log_menu.Check(self.plot.log_field)
         fullDomain = self.popupmenu.Append(-1, "Zoom Top")
 
         self.Bind(wx.EVT_MENU, self.OnCenterOnMax, centerOnMax)
         self.Bind(wx.EVT_MENU, self.OnCenterHere, centerHere)
         self.Bind(wx.EVT_MENU, self.show_grid_boundaries, gridBoundaries)
         self.Bind(wx.EVT_MENU, self.show_velocities, velocities)
+        self.Bind(wx.EVT_MENU, self.take_log, self.take_log_menu)
         self.Bind(wx.EVT_MENU, self.fulldomain, fullDomain)
 
     def SetupFigure(self):
@@ -586,6 +591,10 @@
     def GetDataValue(self, x, y):
         return self.plot.image._A[int(y), int(x)]
 
+    def take_log(self, event):
+        self.plot.set_log_field(self.take_log_menu.IsChecked())
+        self.UpdateCanvas()
+
     def fulldomain(self, *args):
         self.ChangeWidth(1,'1')
         Publisher().sendMessage(('viewchange','width'), (1,'1'))
@@ -602,6 +611,7 @@
     def ChangeField(self, field):
         self.plot.switch_z(field)
         self.UpdateCanvas()
+        self.take_log_menu.Check(self.plot.log_field)
 
     def switch_field(self, event):
         field = event.GetString()
@@ -770,6 +780,16 @@
             self.figure_canvas.draw()
         #else: print "Opting not to update canvas"
 
+    def ChangeLimitsFromMessage(self, message):
+        zmin, zmax = message.data
+        self.ChangeLimits(zmin,zmax)
+
+    def ChangeLimits(self, zmin, zmax):
+        print "Change Limits"
+        self.plot.set_zlim(zmin,zmax)
+        self.figure_canvas.draw()
+        # We don't call update canvas
+
 if __name__ == "__main__":
     app = ReasonApp(0)
     app.MainLoop()



More information about the yt-svn mailing list