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

Skip to content

Commit 1849626

Browse files
committed
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
1 parent 8ac5b4b commit 1849626

File tree

5 files changed

+68
-14
lines changed

5 files changed

+68
-14
lines changed

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: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@
114114

115115
from matplotlib.externals import six
116116
from matplotlib.externals.six.moves import xrange, zip
117-
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,12 @@ 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): rcParams['date.autoformatter.minute'],
693+
1. / (SEC_PER_DAY): rcParams['date.autoformatter.second'],}
693694

694695
def __call__(self, x, pos=None):
695696
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: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

0 commit comments

Comments
 (0)