Revision: 6844
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6844&view=rev
Author: jrevans
Date: 2009-01-28 17:55:07 + (Wed, 28 Jan 2009)
Log Message:
---
Updated ConversionInterface to recieve the associated calling Axis instance for
each of the methods.
Updated appropriate calls in other code.
Modified DateConverter to use units for timezone specification.
Modified Paths:
--
trunk/matplotlib/lib/matplotlib/axis.py
trunk/matplotlib/lib/matplotlib/dates.py
trunk/matplotlib/lib/matplotlib/units.py
Modified: trunk/matplotlib/lib/matplotlib/axis.py
===
--- trunk/matplotlib/lib/matplotlib/axis.py 2009-01-27 17:41:33 UTC (rev
6843)
+++ trunk/matplotlib/lib/matplotlib/axis.py 2009-01-28 17:55:07 UTC (rev
6844)
@@ -939,7 +939,7 @@
converter = munits.registry.get_converter(data)
if converter is None: return False
self.converter = converter
-default = self.converter.default_units(data)
+default = self.converter.default_units(self, data)
#print 'update units: default="%s", units=%s"'%(default, self.units)
if default is not None and self.units is None:
self.set_units(default)
@@ -955,7 +955,7 @@
if self.converter is None:
return
-info = self.converter.axisinfo(self.units)
+info = self.converter.axisinfo(self, self.units)
if info is None:
return
if info.majloc is not None and self.major.locator!=info.majloc:
@@ -982,7 +982,7 @@
#print 'convert_units returning identity: units=%s,
converter=%s'%(self.units, self.converter)
return x
-ret = self.converter.convert(x, self.units)
+ret = self.converter.convert(self, x, self.units)
#print 'convert_units converting: axis=%s, units=%s, converter=%s,
in=%s, out=%s'%(self, self.units, self.converter, x, ret)
return ret
Modified: trunk/matplotlib/lib/matplotlib/dates.py
===
--- trunk/matplotlib/lib/matplotlib/dates.py2009-01-27 17:41:33 UTC (rev
6843)
+++ trunk/matplotlib/lib/matplotlib/dates.py2009-01-28 17:55:07 UTC (rev
6844)
@@ -1004,29 +1004,56 @@
class DateConverter(units.ConversionInterface):
+"""The units are equivalent to the timezone."""
@staticmethod
-def axisinfo(unit):
+def axisinfo(axis, unit):
'return the unit AxisInfo'
-if unit=='date':
-majloc = AutoDateLocator()
-majfmt = AutoDateFormatter(majloc)
-return units.AxisInfo(
-majloc = majloc,
-majfmt = majfmt,
-label='',
-)
-else: return None
+# make sure that the axis does not start at 0
+ax = axis.axes
+if axis is ax.get_xaxis():
+xmin, xmax = ax.dataLim.intervalx
+if xmin==0.:
+# no data has been added - let's set the default datalim.
+# We should probably use a better proxy for the datalim
+# have been updated than the ignore setting
+dmax = today = datetime.date.today()
+dmin = today-datetime.timedelta(days=10)
+
+ax._process_unit_info(xdata=(dmin, dmax))
+dmin, dmax = ax.convert_xunits([dmin, dmax])
+
+ax.viewLim.intervalx = dmin, dmax
+ax.dataLim.intervalx = dmin, dmax
+elif axis is ax.get_yaxis():
+ymin, ymax = ax.dataLim.intervaly
+if ymin==0.:
+# no data has been added - let's set the default datalim.
+# We should probably use a better proxy for the datalim
+# have been updated than the ignore setting
+dmax = today = datetime.date.today()
+dmin = today-datetime.timedelta(days=10)
+
+ax._process_unit_info(ydata=(dmin, dmax))
+dmin, dmax = ax.convert_yunits([dmin, dmax])
+
+ax.viewLim.intervaly = dmin, dmax
+ax.dataLim.intervaly = dmin, dmax
+
+majloc = AutoDateLocator(tz=unit)
+majfmt = AutoDateFormatter(majloc, tz=unit)
+return units.AxisInfo( majloc=majloc, majfmt=majfmt, label='' )
+
@staticmethod
-def convert(value, unit):
+def convert(axis, value, unit):
if units.ConversionInterface.is_numlike(value): return value
return date2num(value)
@staticmethod
-def default_units(x):
+def default_units(axis, x):
'Return the default unit for *x* or None'
-return 'date'
+return None
units.registry[datetime.date] = DateConverter()
Modified: trunk/matplotlib/lib/matplotlib/units.py
===
--- trunk/matplotlib/lib/matplotlib/units.py