1
1
"""
2
2
Matplotlib provides sophisticated date plotting capabilities, standing on the
3
3
shoulders of python :mod:`datetime`, the add-on modules :mod:`pytz` and
4
- :mod:`dateutil`. :class:`datetime` objects are converted to floating point
5
- numbers which represent time in days since 0001-01-01 UTC, plus 1. For
6
- example, 0001-01-01, 06:00 is 1.25, not 0.25. The helper functions
7
- :func:`date2num`, :func:`num2date` and :func:`drange` are used to facilitate
8
- easy conversion to and from :mod:`datetime` and numeric ranges.
4
+ :mod:`dateutil`.
5
+
6
+
7
+ .. _date-format:
8
+
9
+ Matplotlib date format
10
+ ----------------------
11
+ Matplotlib represents dates using floating point numbers specifying the number
12
+ of days since 0001-01-01 UTC, plus 1. For example, 0001-01-01, 06:00 is 1.25,
13
+ not 0.25. Values < 1, i.e. dates before 0001-01-01 UTC are not supported.
14
+
15
+ There are a number of helper functions to convert between :mod:`datetime`
16
+ objects and Matplotlib dates:
17
+
18
+ .. currentmodule:: matplotlib.dates
19
+
20
+ .. autosummary::
21
+ :nosignatures:
22
+
23
+ date2num
24
+ num2date
25
+ num2timedelta
26
+ epoch2num
27
+ num2epoch
28
+ mx2num
29
+ drange
9
30
10
31
.. note::
11
32
20
41
732403, whereas using the Gregorian calendar via the datetime
21
42
module we find::
22
43
23
- In [31]: date(2006,4, 1).toordinal() - date(1,1, 1).toordinal()
24
- Out[31]: 732401
44
+ In [1]: date(2006, 4, 1).toordinal() - date(1, 1, 1).toordinal()
45
+ Out[1]: 732401
25
46
47
+ All the Matplotlib date converters, tickers and formatters are timezone aware.
48
+ If no explicit timezone is provided, the rcParam ``timezone`` is assumend. If
49
+ you want to use a custom time zone, pass a :class:`pytz.timezone` instance
50
+ with the tz keyword argument to :func:`num2date`, :func:`.plot_date`, and any
51
+ custom date tickers or locators you create.
52
+ See `pytz <http://pythonhosted.org/pytz/>`_ for information on :mod:`pytz` and
53
+ timezone handling.
26
54
27
55
A wide range of specific and general purpose date tick locators and
28
56
formatters are provided in this module. See
29
57
:mod:`matplotlib.ticker` for general information on tick locators
30
58
and formatters. These are described below.
31
59
32
- All the matplotlib date converters, tickers and formatters are
33
- timezone aware, and the default timezone is given by the timezone
34
- parameter in your :file:`matplotlibrc` file. If you leave out a
35
- :class:`tz` timezone instance, the default from your rc file will be
36
- assumed. If you want to use a custom time zone, pass a
37
- :class:`pytz.timezone` instance with the tz keyword argument to
38
- :func:`num2date`, :func:`plot_date`, and any custom date tickers or
39
- locators you create. See `pytz <http://pythonhosted.org/pytz/>`_ for
40
- information on :mod:`pytz` and timezone handling.
41
60
42
61
The `dateutil module <https://dateutil.readthedocs.io/en/stable/>`_ provides
43
62
additional code to handle date ticking, making it easy to place ticks
@@ -381,12 +400,11 @@ def datestr2num(d, default=None):
381
400
382
401
def date2num (d ):
383
402
"""
384
- Converts datetime objects to Matplotlib dates.
403
+ Convert datetime objects to Matplotlib dates.
385
404
386
405
Parameters
387
406
----------
388
- d : :class:`datetime` or :class:`numpy.datetime64`, or sequences of
389
- these classes.
407
+ d : `datetime.datetime` or `numpy.datetime64` or sequences of these
390
408
391
409
Returns
392
410
-------
@@ -415,11 +433,11 @@ def date2num(d):
415
433
416
434
def julian2num (j ):
417
435
"""
418
- Convert a Julian date (or sequence) to a matplotlib date (or sequence).
436
+ Convert a Julian date (or sequence) to a Matplotlib date (or sequence).
419
437
420
438
Parameters
421
439
----------
422
- k : float or sequence of floats
440
+ j : float or sequence of floats
423
441
Julian date(s)
424
442
425
443
Returns
@@ -453,21 +471,23 @@ def num2julian(n):
453
471
454
472
def num2date (x , tz = None ):
455
473
"""
474
+ Convert Matplotlib dates to `~datetime.datetime` objects.
475
+
456
476
Parameters
457
477
----------
458
478
x : float or sequence of floats
459
479
Number of days (fraction part represents hours, minutes, seconds)
460
480
since 0001-01-01 00:00:00 UTC, plus one.
461
481
tz : string, optional
462
- Timezone of *x* (defaults to rcparams TZ value ).
482
+ Timezone of *x* (defaults to rcparams ``timezone`` ).
463
483
464
484
Returns
465
485
-------
466
- :class:` datetime` or sequence of :class:` datetime`
467
- Dates are returned in timezone *tz*
486
+ `~ datetime.datetime ` or sequence of `~datetime. datetime`
487
+ Dates are returned in timezone *tz*.
468
488
469
- If *x* is a sequence, a sequence of :class:`datetime` objects will
470
- be returned.
489
+ If *x* is a sequence, a sequence of :class:`datetime` objects will
490
+ be returned.
471
491
472
492
Notes
473
493
-----
@@ -495,18 +515,19 @@ def _ordinalf_to_timedelta(x):
495
515
496
516
def num2timedelta (x ):
497
517
"""
498
- Converts number of days to a :class:`timdelta` object.
499
- If *x* is a sequence, a sequence of :class:`timedelta` objects will
518
+ Convert number of days to a `~datetime.timedelta` object.
519
+
520
+ If *x* is a sequence, a sequence of `~datetime.timedelta` objects will
500
521
be returned.
501
522
502
523
Parameters
503
524
----------
504
525
x : float, sequence of floats
505
- Number of days ( fraction part represents hours, minutes, seconds)
526
+ Number of days. The fraction part represents hours, minutes, seconds.
506
527
507
528
Returns
508
529
-------
509
- :class:` timedelta` or list[:class:` timedelta`]
530
+ `datetime. timedelta` or list[`datetime. timedelta`]
510
531
511
532
"""
512
533
if not cbook .iterable (x ):
@@ -520,9 +541,23 @@ def num2timedelta(x):
520
541
521
542
def drange (dstart , dend , delta ):
522
543
"""
523
- Return a date range as float Gregorian ordinals. *dstart* and
524
- *dend* are :class:`datetime` instances. *delta* is a
525
- :class:`datetime.timedelta` instance.
544
+ Return a sequence of equally spaced Matplotlib dates.
545
+
546
+ The dates start at *dstart* and reach up to, but not including *dend*.
547
+ They are spaced by *delta*.
548
+
549
+ Parameters
550
+ ----------
551
+ dstart, dend : `~datetime.datetime`
552
+ The date limits.
553
+ delta : `datetime.timedelta`
554
+ Spacing of the dates.
555
+
556
+ Returns
557
+ -------
558
+ drange : `numpy.array`
559
+ A list floats representing Matplotlib dates.
560
+
526
561
"""
527
562
f1 = date2num (dstart )
528
563
f2 = date2num (dend )
0 commit comments