From 6ac74e5c4ec4499cb8a14a89be64bf172deff681 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 10 May 2016 19:47:02 -0400 Subject: [PATCH] FIX: revert part of #11770 Reverts part of: https://github.com/pydata/pandas/pull/11770 Closes: https://github.com/matplotlib/matplotlib/issues/6365 The mistake in #11770 was missing that pandas had a 1/us not 1/s scaled bucket. --- doc/source/whatsnew/v0.18.2.txt | 5 +---- pandas/tseries/converter.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/doc/source/whatsnew/v0.18.2.txt b/doc/source/whatsnew/v0.18.2.txt index 34bd2956319fc..a7efb3fb3070d 100644 --- a/doc/source/whatsnew/v0.18.2.txt +++ b/doc/source/whatsnew/v0.18.2.txt @@ -143,7 +143,4 @@ Bug Fixes - - - - +- Bug in ``AutoDataFormatter``, restore second scaled formatting and readd musecond scaled formatting (:issue:`13131`) diff --git a/pandas/tseries/converter.py b/pandas/tseries/converter.py index 8ccfdfa05e9b5..0fd9cdd1a0ffd 100644 --- a/pandas/tseries/converter.py +++ b/pandas/tseries/converter.py @@ -4,6 +4,7 @@ from dateutil.relativedelta import relativedelta +import matplotlib import matplotlib.units as units import matplotlib.dates as dates @@ -23,6 +24,16 @@ from pandas.tseries.frequencies import FreqGroup from pandas.tseries.period import Period, PeriodIndex +# constants +HOURS_PER_DAY = 24. +MIN_PER_HOUR = 60. +SEC_PER_MIN = 60. + +SEC_PER_HOUR = SEC_PER_MIN * MIN_PER_HOUR +SEC_PER_DAY = SEC_PER_HOUR * HOURS_PER_DAY + +MUSEC_PER_DAY = 1e6 * SEC_PER_DAY + def register(): units.registry[lib.Timestamp] = DatetimeConverter() @@ -221,6 +232,13 @@ def __init__(self, locator, tz=None, defaultfmt='%Y-%m-%d'): if self._tz is dates.UTC: self._tz._utcoffset = self._tz.utcoffset(None) + # For mpl > 2.0 the format strings are controlled via rcparams + # so do not mess with them. For mpl < 2.0 change the second + # break point and add a musec break point + if matplotlib.compare_versions('2.0.0', matplotlib.__version__): + self.scaled[1. / SEC_PER_DAY] = '%H:%M:%S' + self.scaled[1. / MUSEC_PER_DAY] = '%H:%M:%S.%f' + class PandasAutoDateLocator(dates.AutoDateLocator):