Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 4c83537

Browse files
committed
Merge pull request #5698 from tacaswell/dflt_autodateformat
Dflt autodateformat
2 parents f52afbf + 5206cb0 commit 4c83537

6 files changed

Lines changed: 75 additions & 18 deletions

File tree

doc/users/whats_new/rcparams.rst

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,27 @@
1-
Added ``svg.hashsalt`` key to rcParams
2-
```````````````````````````````````````
1+
Configuration (rcParams)
2+
------------------------
3+
4+
+----------------------------+--------------------------------------------------+
5+
| Parameter | Description |
6+
+============================+==================================================+
7+
|`date.autoformatter.year` | foramt string for 'year' scale dates |
8+
+----------------------------+--------------------------------------------------+
9+
|`date.autoformatter.month` | format string for 'month' scale dates |
10+
+----------------------------+--------------------------------------------------+
11+
|`date.autoformatter.day` | format string for 'day' scale dates |
12+
+----------------------------+--------------------------------------------------+
13+
|`date.autoformatter.hour` | format string for 'hour' scale times |
14+
+----------------------------+--------------------------------------------------+
15+
|`date.autoformatter.minute` | format string for 'minute' scale times |
16+
+----------------------------+--------------------------------------------------+
17+
|`date.autoformatter.second` | format string for 'second' scale times |
18+
+----------------------------+--------------------------------------------------+
19+
|`svg.hashsalt` | see note |
20+
+----------------------------+--------------------------------------------------+
21+
22+
``svg.hashsalt``
23+
````````````````
24+
325
If ``svg.hashsalt`` is ``None`` (which it is by default), the svg backend uses ``uuid4`` to generate the hash salt.
426
If it is not ``None``, it must be a string that is used as the hash salt instead of ``uuid4``.
527
This allows for deterministic SVG output.

lib/matplotlib/dates.py

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,8 @@
113113
unicode_literals)
114114

115115
from matplotlib.externals import six
116-
from matplotlib.externals.six.moves import xrange, zip
117-
116+
from matplotlib.externals.six.moves import zip
117+
from matplotlib import rcParams
118118
import re
119119
import time
120120
import math
@@ -629,12 +629,12 @@ class AutoDateFormatter(ticker.Formatter):
629629
format string. The default looks like this::
630630
631631
self.scaled = {
632-
365.0 : '%Y',
633-
30. : '%b %Y',
634-
1.0 : '%b %d %Y',
635-
1./24. : '%H:%M:%S',
636-
1. / (24. * 60.): '%H:%M:%S.%f',
637-
}
632+
DAYS_PER_YEAR: rcParams['date.autoformat.year'],
633+
DAYS_PER_MONTH: rcParams['date.autoformat.month'],
634+
1.0: rcParams['date.autoformat.day'],
635+
1. / HOURS_PER_DAY: rcParams['date.autoformat.hour'],
636+
1. / (MINUTES_PER_DAY): rcParams['date.autoformat.minute'],
637+
1. / (SEC_PER_DAY): rcParams['date.autoformat.second']}
638638
639639
640640
The algorithm picks the key in the dictionary that is >= the
@@ -685,11 +685,14 @@ def __init__(self, locator, tz=None, defaultfmt='%Y-%m-%d'):
685685
self._tz = tz
686686
self.defaultfmt = defaultfmt
687687
self._formatter = DateFormatter(self.defaultfmt, tz)
688-
self.scaled = {DAYS_PER_YEAR: '%Y',
689-
DAYS_PER_MONTH: '%b %Y',
690-
1.0: '%b %d %Y',
691-
1. / HOURS_PER_DAY: '%H:%M:%S',
692-
1. / (MINUTES_PER_DAY): '%H:%M:%S.%f'}
688+
self.scaled = {DAYS_PER_YEAR: rcParams['date.autoformatter.year'],
689+
DAYS_PER_MONTH: rcParams['date.autoformatter.month'],
690+
1.0: rcParams['date.autoformatter.day'],
691+
1. / HOURS_PER_DAY: rcParams['date.autoformatter.hour'],
692+
1. / (MINUTES_PER_DAY):
693+
rcParams['date.autoformatter.minute'],
694+
1. / (SEC_PER_DAY):
695+
rcParams['date.autoformatter.second']}
693696

694697
def __call__(self, x, pos=None):
695698
locator_unit_scale = float(self._locator._get_unit())

lib/matplotlib/mpl-data/stylelib/classic.mplstyle

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,13 @@ axes.spines.top : True
215215
polaraxes.grid : True # display grid on polar axes
216216
axes3d.grid : True # display grid on 3d axes
217217

218+
date.autoformatter.year : %Y
219+
date.autoformatter.month : %b %Y
220+
date.autoformatter.day : %b %d %Y
221+
date.autoformatter.hour : %H:%M:%S
222+
date.autoformatter.minute : %H:%M:%S.%f
223+
date.autoformatter.second : %H:%M:%S.%f
224+
218225
### TICKS
219226
# see http://matplotlib.org/api/axis_api.html#matplotlib.axis.Tick
220227

lib/matplotlib/rcsetup.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1015,6 +1015,13 @@ def validate_hist_bins(s):
10151015
'polaraxes.grid': [True, validate_bool], # display polar grid or
10161016
# not
10171017
'axes3d.grid': [True, validate_bool], # display 3d grid
1018+
# TODO validate that these are valid datetime format strings
1019+
'date.autoformatter.year': ['%Y', six.text_type],
1020+
'date.autoformatter.month': ['%Y-%m', six.text_type],
1021+
'date.autoformatter.day': ['%Y-%m-%d', six.text_type],
1022+
'date.autoformatter.hour': ['%H:%M', six.text_type],
1023+
'date.autoformatter.minute': ['%H:%M:%S', six.text_type],
1024+
'date.autoformatter.second': ['%H:%M:%S.%f', six.text_type],
10181025

10191026
#legend properties
10201027
'legend.fancybox': [False, validate_bool],

matplotlibrc.template

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
# You can also deploy your own backend outside of matplotlib by
3636
# referring to the module name (which must be in the PYTHONPATH) as
3737
# 'module://my_backend'.
38-
backend : %(backend)s
38+
backend : $TEMPLATE_BACKEND
3939

4040
# If you are using the Qt4Agg backend, you can choose here
4141
# to use the PyQt4 bindings or the newer PySide bindings to
@@ -311,6 +311,7 @@ backend : %(backend)s
311311
# small compared to the minimum absolute
312312
# value of the data.
313313

314+
314315
#axes.unicode_minus : True # use unicode for the minus symbol
315316
# rather than hyphen. See
316317
# http://en.wikipedia.org/wiki/Plus_and_minus_signs#Character_codes
@@ -328,6 +329,22 @@ backend : %(backend)s
328329
#polaraxes.grid : True # display grid on polar axes
329330
#axes3d.grid : True # display grid on 3d axes
330331

332+
### DATES
333+
# These control the default format strings used in AutoDateFormatter.
334+
# Any valid format datetime format string can be used (see the python
335+
# `datetime` for details). For example using '%%x' will use the locale date representation
336+
# '%%X' will use the locale time representation and '%%c' will use the full locale datetime
337+
# representation.
338+
# These values map to the scales:
339+
# {'year': 365, 'month': 30, 'day': 1, 'hour': 1/24, 'minute': 1 / (24 * 60)}
340+
341+
# date.autoformatter.year : %Y
342+
# date.autoformatter.month : %Y-%m
343+
# date.autoformatter.day : %Y-%m-%d
344+
# date.autoformatter.hour : %H:%M
345+
# date.autoformatter.minute : %H:%M:%S
346+
# date.autoformatter.second : %H:%M:%S.%f
347+
331348
### TICKS
332349
# see http://matplotlib.org/api/axis_api.html#matplotlib.axis.Tick
333350

setup.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"""
55

66
from __future__ import print_function, absolute_import
7-
7+
from string import Template
88
# This needs to be the very first thing to use distribute
99
from distribute_setup import use_setuptools
1010
use_setuptools()
@@ -230,8 +230,9 @@ def run(self):
230230
default_backend = setupext.options['backend']
231231
with open('matplotlibrc.template') as fd:
232232
template = fd.read()
233+
template = Template(template)
233234
with open('lib/matplotlib/mpl-data/matplotlibrc', 'w') as fd:
234-
fd.write(template % {'backend': default_backend})
235+
fd.write(template.safe_substitute(TEMPLATE_BACKEND=default_backend))
235236

236237
# Build in verbose mode if requested
237238
if setupext.options['verbose']:

0 commit comments

Comments
 (0)