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.4.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.4-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: datetick-0.9.4.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.4.tar.gz
Algorithm Hash digest
SHA256 3a454adf688bda9fe2926ade5c1ae87bfbc29c85b785e58f098b08239a3a5af8
MD5 7d984bef6e32c8fec6f32260b3600d3c
BLAKE2b-256 8e7b2275e8fd010071e6d9c09def9e15489de4a24805a4fd96b6a79398b4961c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: datetick-0.9.4-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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 03878cd363fb51f44184e355bbe18a64283056c4b0b4417490a88592b58d132b
MD5 838f94764501dae183256c5a446d6fb3
BLAKE2b-256 228bced904001b254acd451d52689a63d6e7d0e6951663da43be2b8436315eaa

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