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

dir=x

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010102230000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010102230000-x_v2.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010102230000-x_v3.png

test/visual_test/python-3.13/mpl-3.10.9/20001231170000-20010102190000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20001231170000-20010102190000-x_v2.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010101000001-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010101000002-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010101000003-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010101000004-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101235958-20010102000002-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010101000005-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010101000006-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010101000007-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010101000009-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101235958-20010102000005-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101235959-20010102000005-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101005958-20010101010005-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101005958-20010101010007-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101005958-20010101010003-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101235956-20010102000010-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101235958-20010102000010-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101005956-20010101010010-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101005956-20010101010015-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101005956-20010101010006-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010101000021-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010101060000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010101090000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010101110000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010101110000-x_v2.png

test/visual_test/python-3.13/mpl-3.10.9/20010101005958-20010101010028-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000058-20010101000118-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010101180000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010101120000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010101230000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101020000-20010102010000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010102010000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101060000-20010102070000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101003000-20010102010000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010103000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010103123000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010103235959-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010105000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010105000000-x_v2.png

test/visual_test/python-3.13/mpl-3.10.9/20010130000000-20010201230000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20011230000000-20020101230000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010109000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010116230000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010130000000-20010204230000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20011230000000-20020104230000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010131000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010116230000-x_v2.png

test/visual_test/python-3.13/mpl-3.10.9/20010130000000-20010215230000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20011230000000-20010115230000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010202000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010227230000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010115000000-20010216230000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20011231000000-20020226230000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010502000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010227230000-x_v2.png

test/visual_test/python-3.13/mpl-3.10.9/20011231000000-20020226230000-x_v2.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20010702000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20011231000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010212000000-20020131000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20020103000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20021231000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010401000000-20020430000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20011001000000-20031004000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20081231000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20030104000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20090104000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20120104000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20000101000000-20170104000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20010101000000-20180104000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20020101000000-20190104000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20030101000000-20200104000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/20040101000000-20300104000000-x.png

test/visual_test/python-3.13/mpl-3.10.9/19500101000000-20120104000000-x.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.6.tar.gz (14.3 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.6-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: datetick-0.9.6.tar.gz
  • Upload date:
  • Size: 14.3 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.6.tar.gz
Algorithm Hash digest
SHA256 b62a31d3f37ec714ed6b1afe54b6921e2959fcf510f896635e68672f98b7f8f7
MD5 b1ac6c52835018a792dbddd8eaad7b2e
BLAKE2b-256 94da195e3c9fcfc2f926bfd663a8580847ed88a029fdd98b1494a412acc7f49c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: datetick-0.9.6-py3-none-any.whl
  • Upload date:
  • Size: 13.1 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.6-py3-none-any.whl
Algorithm Hash digest
SHA256 0e207040ae66030e01db3a81e9a1005b4f47eb9ea4291bf0999831fc33469d4d
MD5 fa55b089888a972aa9faab9d8ff38cc1
BLAKE2b-256 e312e702f5d2f238440bbb38d5f7243a996884ad0c4900b200f0423ad0409aa4

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