Skip to main content

Sensible date tick locator for matplotlib

Project description

datetick

Sensible numeric time and date tick labels for Matplotlib

Motivation

Matplotlib's default time tick labels are often poor, and adjusting them requires using locators and formatters on an ad-hoc basis. In addition, the interfaces for locators and formatters complex and non-intuitive and require study and experimentation.

datetick() contains logic for locators and formatters that apply to plots with arbitrary time ranges. One only needs to add the command datetick() after the usual Matplotlib plt.plot(...) command to have sensible and useable time tick labels.

Usage

import datetime as dt
import matplotlib.pyplot as plt
from datetick import datetick

dt1 = dt.datetime(2011, 1, 2)
dt2 = dt1 + dt.timedelta(days=1, hours=1, minutes=1)

plt.plot([dt1, dt2], [0.0,1.0])
datetick()
plt.show()
# or
# datetick('x') (use 'y' if y variable is a time)
# or
# datetick('x', axes=plt.gca())
# or
# fig, axes = plt.subplots(2)
# plt.plot([dt1, dt2], [0.0, 1.0])
# datetick('x', axes=axes[0])

Comparison to default Matplotlib

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010102230000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010102230000_2.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010102230000_3.png

test/visual_test/python-3.14/mpl-3.10.9/20001231170000-20010102190000.png

test/visual_test/python-3.14/mpl-3.10.9/20001231170000-20010102190000_2.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010101000001.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010101000002.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010101000003.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010101000004.png

test/visual_test/python-3.14/mpl-3.10.9/20010101235958-20010102000002.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010101000005.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010101000006.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010101000007.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010101000009.png

test/visual_test/python-3.14/mpl-3.10.9/20010101235958-20010102000005.png

test/visual_test/python-3.14/mpl-3.10.9/20010101235959-20010102000005.png

test/visual_test/python-3.14/mpl-3.10.9/20010101005958-20010101010005.png

test/visual_test/python-3.14/mpl-3.10.9/20010101005958-20010101010007.png

test/visual_test/python-3.14/mpl-3.10.9/20010101005958-20010101010003.png

test/visual_test/python-3.14/mpl-3.10.9/20010101235956-20010102000010.png

test/visual_test/python-3.14/mpl-3.10.9/20010101235958-20010102000010.png

test/visual_test/python-3.14/mpl-3.10.9/20010101005956-20010101010010.png

test/visual_test/python-3.14/mpl-3.10.9/20010101005956-20010101010015.png

test/visual_test/python-3.14/mpl-3.10.9/20010101005956-20010101010006.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010101000021.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010101060000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010101090000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010101110000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010101110000_2.png

test/visual_test/python-3.14/mpl-3.10.9/20010101005958-20010101010028.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000058-20010101000118.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010101180000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010101120000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010101230000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101020000-20010102010000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010102010000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101060000-20010102070000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101003000-20010102010000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010103000000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010103123000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010103235959.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010105000000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010105000000_2.png

test/visual_test/python-3.14/mpl-3.10.9/20010130000000-20010201230000.png

test/visual_test/python-3.14/mpl-3.10.9/20011230000000-20020101230000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010109000000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010116230000.png

test/visual_test/python-3.14/mpl-3.10.9/20010130000000-20010204230000.png

test/visual_test/python-3.14/mpl-3.10.9/20011230000000-20020104230000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010131000000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010116230000_2.png

test/visual_test/python-3.14/mpl-3.10.9/20010130000000-20010215230000.png

test/visual_test/python-3.14/mpl-3.10.9/20011230000000-20010115230000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010202000000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010227230000.png

test/visual_test/python-3.14/mpl-3.10.9/20010115000000-20010216230000.png

test/visual_test/python-3.14/mpl-3.10.9/20011231000000-20020226230000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010502000000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010227230000_2.png

test/visual_test/python-3.14/mpl-3.10.9/20011231000000-20020226230000_2.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20010702000000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20011231000000.png

test/visual_test/python-3.14/mpl-3.10.9/20010212000000-20020131000000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20020103000000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20021231000000.png

test/visual_test/python-3.14/mpl-3.10.9/20010401000000-20020430000000.png

test/visual_test/python-3.14/mpl-3.10.9/20011001000000-20031004000000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20081231000000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20030104000000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20090104000000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20120104000000.png

test/visual_test/python-3.14/mpl-3.10.9/20000101000000-20170104000000.png

test/visual_test/python-3.14/mpl-3.10.9/20010101000000-20180104000000.png

test/visual_test/python-3.14/mpl-3.10.9/20020101000000-20190104000000.png

test/visual_test/python-3.14/mpl-3.10.9/20030101000000-20200104000000.png

test/visual_test/python-3.14/mpl-3.10.9/20040101000000-20300104000000.png

test/visual_test/python-3.14/mpl-3.10.9/19500101000000-20120104000000.png

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

datetick-0.9.5.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

datetick-0.9.5-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

Details for the file datetick-0.9.5.tar.gz.

File metadata

  • Download URL: datetick-0.9.5.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for datetick-0.9.5.tar.gz
Algorithm Hash digest
SHA256 55d91f49f64644022337fcb387e02e2f6e8eb902d467107314263151a03eb092
MD5 c7151311e1c716d2d5da310e8b21820a
BLAKE2b-256 13f42e34838b8a2c07ec505ead846b473c95d0d744a516e492b08cf1c046992a

See more details on using hashes here.

File details

Details for the file datetick-0.9.5-py3-none-any.whl.

File metadata

  • Download URL: datetick-0.9.5-py3-none-any.whl
  • Upload date:
  • Size: 12.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for datetick-0.9.5-py3-none-any.whl
Algorithm Hash digest
SHA256 4c68f4f8e874d5a0a2489d97505320572014ac1b1144d04ae78e19cacbc1babb
MD5 49cfc7574d1b055d773960bcdb495673
BLAKE2b-256 8f92e29066a007919163c2bf0b7ca793cdb63370a74c8e8768cc0d2883ba0a8a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page