@@ -987,12 +987,17 @@ def update_units(self, data):
987987
988988 converter = munits .registry .get_converter (data )
989989 if converter is None : return False
990+
991+ neednew = self .converter != converter
990992 self .converter = converter
991993 default = self .converter .default_units (data , self )
992994 #print 'update units: default="%s", units=%s"'%(default, self.units)
993995 if default is not None and self .units is None :
994996 self .set_units (default )
995- self ._update_axisinfo ()
997+
998+
999+ if neednew :
1000+ self ._update_axisinfo ()
9961001 return True
9971002
9981003 def _update_axisinfo (self ):
@@ -1196,6 +1201,17 @@ def zoom(self, direction):
11961201 "Zoom in/out on axis; if *direction* is >0 zoom in, else zoom out"
11971202 self .major .locator .zoom (direction )
11981203
1204+
1205+ def axis_date (self ):
1206+ """
1207+ Sets up x-axis ticks and labels that treat the x data as dates.
1208+ """
1209+ import datetime
1210+ # should be enough to inform the unit conversion interface
1211+ # dates are comng in
1212+ self .update_units (datetime .date (2009 ,1 ,1 ))
1213+
1214+
11991215class XAxis (Axis ):
12001216 __name__ = 'xaxis'
12011217 axis_name = 'x'
@@ -1442,7 +1458,7 @@ def set_default_intervals(self):
14421458 if not dataMutated or not viewMutated :
14431459 if self .converter is not None :
14441460 info = self .converter .axisinfo (self .units , self )
1445- if info .default_limits is not None :
1461+ if info .default_limits is not None :
14461462 valmin , valmax = info .default_limits
14471463 xmin = self .converter .convert (valmin , self .units , self )
14481464 xmax = self .converter .convert (valmax , self .units , self )
@@ -1451,7 +1467,7 @@ def set_default_intervals(self):
14511467 if not viewMutated :
14521468 self .axes .viewLim .intervalx = xmin , xmax
14531469
1454-
1470+
14551471
14561472class YAxis (Axis ):
14571473 __name__ = 'yaxis'
@@ -1707,7 +1723,7 @@ def set_default_intervals(self):
17071723 if not dataMutated or not viewMutated :
17081724 if self .converter is not None :
17091725 info = self .converter .axisinfo (self .units , self )
1710- if info .default_limits is not None :
1726+ if info .default_limits is not None :
17111727 valmin , valmax = info .default_limits
17121728 ymin = self .converter .convert (valmin , self .units , self )
17131729 ymax = self .converter .convert (valmax , self .units , self )
@@ -1716,4 +1732,4 @@ def set_default_intervals(self):
17161732 if not viewMutated :
17171733 self .axes .viewLim .intervaly = ymin , ymax
17181734
1719-
1735+
0 commit comments