From f4e6dca76d1a5241567310ce525d0acdc3882980 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sun, 8 Nov 2015 17:22:45 -0500 Subject: [PATCH] DFLT: change formats for AutoDateFormatter - Use ISO complient formats by default - aded extra level of scale (seconds) - add rcparams for all of these strings closes #4808 closes #4809 closes #5086 --- doc/users/whats_new/rcparams.rst | 19 ++++++++++++++ lib/matplotlib/dates.py | 25 ++++++++++--------- .../mpl-data/stylelib/classic.mplstyle | 9 ++++++- lib/matplotlib/rcsetup.py | 7 ++++++ matplotlibrc.template | 17 +++++++++++++ 5 files changed, 64 insertions(+), 13 deletions(-) create mode 100644 doc/users/whats_new/rcparams.rst diff --git a/doc/users/whats_new/rcparams.rst b/doc/users/whats_new/rcparams.rst new file mode 100644 index 000000000000..793c2a24014e --- /dev/null +++ b/doc/users/whats_new/rcparams.rst @@ -0,0 +1,19 @@ +Configuration (rcParams) +------------------------ + + ++----------------------------+--------------------------------------------------+ +| Parameter | Description | ++============================+==================================================+ +|`date.autoformatter.year` | foramt string for 'year' scale dates | ++----------------------------+--------------------------------------------------+ +|`date.autoformatter.month` | format string for 'month' scale dates | ++----------------------------+--------------------------------------------------+ +|`date.autoformatter.day` | format string for 'day' scale dates | ++----------------------------+--------------------------------------------------+ +|`date.autoformatter.hour` | format string for 'hour' scale times | ++----------------------------+--------------------------------------------------+ +|`date.autoformatter.minute` | format string for 'minute' scale times | ++----------------------------+--------------------------------------------------+ +|`date.autoformatter.second` | format string for 'second' scale times | ++----------------------------+--------------------------------------------------+ diff --git a/lib/matplotlib/dates.py b/lib/matplotlib/dates.py index 7c71ed2b3faa..16627e802083 100755 --- a/lib/matplotlib/dates.py +++ b/lib/matplotlib/dates.py @@ -114,7 +114,7 @@ from matplotlib.externals import six from matplotlib.externals.six.moves import xrange, zip - +from matplotlib import rcParams import re import time import math @@ -629,12 +629,12 @@ class AutoDateFormatter(ticker.Formatter): format string. The default looks like this:: self.scaled = { - 365.0 : '%Y', - 30. : '%b %Y', - 1.0 : '%b %d %Y', - 1./24. : '%H:%M:%S', - 1. / (24. * 60.): '%H:%M:%S.%f', - } + DAYS_PER_YEAR: rcParams['date.autoformat.year'], + DAYS_PER_MONTH: rcParams['date.autoformat.month'], + 1.0: rcParams['date.autoformat.day'], + 1. / HOURS_PER_DAY: rcParams['date.autoformat.hour'], + 1. / (MINUTES_PER_DAY): rcParams['date.autoformat.minute'], + 1. / (SEC_PER_DAY): rcParams['date.autoformat.second']} The algorithm picks the key in the dictionary that is >= the @@ -685,11 +685,12 @@ def __init__(self, locator, tz=None, defaultfmt='%Y-%m-%d'): self._tz = tz self.defaultfmt = defaultfmt self._formatter = DateFormatter(self.defaultfmt, tz) - self.scaled = {DAYS_PER_YEAR: '%Y', - DAYS_PER_MONTH: '%b %Y', - 1.0: '%b %d %Y', - 1. / HOURS_PER_DAY: '%H:%M:%S', - 1. / (MINUTES_PER_DAY): '%H:%M:%S.%f'} + self.scaled = {DAYS_PER_YEAR: rcParams['date.autoformatter.year'], + DAYS_PER_MONTH: rcParams['date.autoformatter.month'], + 1.0: rcParams['date.autoformatter.day'], + 1. / HOURS_PER_DAY: rcParams['date.autoformatter.hour'], + 1. / (MINUTES_PER_DAY): rcParams['date.autoformatter.minute'], + 1. / (SEC_PER_DAY): rcParams['date.autoformatter.second'],} def __call__(self, x, pos=None): locator_unit_scale = float(self._locator._get_unit()) diff --git a/lib/matplotlib/mpl-data/stylelib/classic.mplstyle b/lib/matplotlib/mpl-data/stylelib/classic.mplstyle index e30f95341f19..39dc21e54545 100644 --- a/lib/matplotlib/mpl-data/stylelib/classic.mplstyle +++ b/lib/matplotlib/mpl-data/stylelib/classic.mplstyle @@ -212,6 +212,13 @@ axes.spines.top : True polaraxes.grid : True # display grid on polar axes axes3d.grid : True # display grid on 3d axes +date.autoformatter.year :'%Y' +date.autoformatter.month :'%b %Y' +date.autoformatter.day :'%b %d %Y' +date.autoformatter.hour :'%H:%M:%S' +date.autoformatter.minute :'%H:%M:%S.%f' +date.autoformatter.second :'%H:%M:%S.%f' + ### TICKS # see http://matplotlib.org/api/axis_api.html#matplotlib.axis.Tick xtick.major.size : 4 # major tick size in points @@ -418,7 +425,7 @@ pdf.use14corefonts : False pgf.debug : False pgf.texsystem : xelatex pgf.rcfonts : True -pgf.preamble : +pgf.preamble : # svg backend params svg.image_inline : True # write raster image data directly into the svg file diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index afe9aecc9e6a..fe9d3179803e 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -965,6 +965,13 @@ def validate_cycler(s): 'polaraxes.grid': [True, validate_bool], # display polar grid or # not 'axes3d.grid': [True, validate_bool], # display 3d grid + # TODO validate that these are valid datetime format strings + 'date.autoformatter.year': ['%Y', six.text_type], + 'date.autoformatter.month': ['%Y-%m', six.text_type], + 'date.autoformatter.day': ['%Y-%m-%d', six.text_type], + 'date.autoformatter.hour': ['%H:%M', six.text_type], + 'date.autoformatter.minute': ['%H:%M:%S', six.text_type], + 'date.autoformatter.second': ['%H:%M:%S.%f', six.text_type], #legend properties 'legend.fancybox': [False, validate_bool], diff --git a/matplotlibrc.template b/matplotlibrc.template index 01efc3bc23ee..af741cb45bd0 100644 --- a/matplotlibrc.template +++ b/matplotlibrc.template @@ -265,6 +265,7 @@ backend : %(backend)s # small compared to the minimum absolute # value of the data. + #axes.unicode_minus : True # use unicode for the minus symbol # rather than hyphen. See # http://en.wikipedia.org/wiki/Plus_and_minus_signs#Character_codes @@ -279,6 +280,22 @@ backend : %(backend)s #polaraxes.grid : True # display grid on polar axes #axes3d.grid : True # display grid on 3d axes +### DATES +# These control the default format strings used in AutoDateFormatter. +# Any valid format datetime format string can be used (see the python +# `datetime` for details). For example using '%%x' will use the locale date representation +# '%%X' will use the locale time representation and '%%c' will use the full locale datetime +# representation. +# These values map to the scales: +# {'year': 365, 'month': 30, 'day': 1, 'hour': 1/24, 'minute': 1 / (24 * 60)} + +# date.autoformatter.year : '%%Y' +# date.autoformatter.month : '%%Y-%%m' +# date.autoformatter.day : '%%Y-%%m-%%d' +# date.autoformatter.hour : '%%H:%%M' +# date.autoformatter.minute : '%%H:%%M:%%S' +# date.autoformatter.second : '%%H:%%M:%%S.%%f' + ### TICKS # see http://matplotlib.org/api/axis_api.html#matplotlib.axis.Tick #xtick.major.size : 4 # major tick size in points pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy