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.3.tar.gz (13.8 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.3-py3-none-any.whl (12.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: datetick-0.9.3.tar.gz
  • Upload date:
  • Size: 13.8 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.3.tar.gz
Algorithm Hash digest
SHA256 92f79fb5bdf09147e9f4e5248f37d0dad345e11ddb4777eae1eb87cfb8f876af
MD5 3bc54d70ff53b228875629db74742de2
BLAKE2b-256 06b7b0a677dea60f088a5dab876110f899a2bb32bcb9095216487ea4c5bae281

See more details on using hashes here.

File details

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

File metadata

  • Download URL: datetick-0.9.3-py3-none-any.whl
  • Upload date:
  • Size: 12.8 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 5cca5c5f17ac8dac05a5221ade9fd2366984ca81db804bd93f700e6983e75eb8
MD5 a251a1cc7a75b2b2649ad110d776f4b0
BLAKE2b-256 5e85ee6ea1351f736f1a8f9f42804ffac6ec97f8c906d3df890896d87231fed2

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