This library allows the user to create data clock graphs, using the matplotlib Python library.
Data clocks visually summarise temporal data in two dimensions, revealing seasonal or cyclical patterns and trends over time. A data clock is a circular chart that divides a larger unit of time into rings and subdivides it by a smaller unit of time into wedges, creating a set of temporal bins.
These temporal bins are symbolised using graduated colors that correspond to a count or aggregated value taking place in each time period.
The table below details the currently supported chart modes and the corresponding rings and wedges:
Mode | Rings | Wedges | Description |
---|---|---|---|
YEAR_MONTH | Years | Months | Years / January - December. |
YEAR_WEEK | Years | Weeks | Years / weeks 1 - 52. |
WEEK_DAY | Weeks | Days of the week | Weeks 1 - 52 / Monday - Sunday. |
DOW_HOUR | Days of the week | Hour of day | Monday - Sunday / 24 hours. |
DAY_HOUR | Days | Hour of day | Days 1 - 356 / 24 hours. |
The full documentation can be viewed on the project GitHub Page.
Chart examples have been generated using UK Department for Transport data 2010 - 2015.
import pandas as pd
from dataclocklib.charts import dataclock
data = pd.read_parquet(
"https://raw.githubusercontent.com/andyrids/dataclocklib/main/tests/data/traffic_data.parquet.gzip"
)
graph_data, fig, ax = dataclock(
data=data.query("Date_Time.dt.year.ge(2015)"),
date_column="Date_Time",
agg_column="Number_of_Casualties",
agg="sum",
mode="DOW_HOUR",
cmap_name="CMRmap_r",
chart_title="UK Car Accident Casualties 2015",
chart_subtitle=None,
chart_source="www.kaggle.com/datasets/silicon99/dft-accident-data"
)
import pandas as pd
from dataclocklib.charts import dataclock
data = pd.read_parquet(
"https://raw.githubusercontent.com/andyrids/dataclocklib/main/tests/data/traffic_data.parquet.gzip"
)
graph_data, fig, ax = dataclock(
data=data.query("Date_Time.dt.year.eq(2010)"),
date_column="Date_Time",
agg_column=None,
agg="count",
mode="DOW_HOUR",
cmap_name="RdYlGn_r",
chart_title="UK Car Accidents 2010",
chart_subtitle=None,
chart_source="www.kaggle.com/datasets/silicon99/dft-accident-data"
)
You can install using pip
:
python -m pip install dataclocklib
To install from GitHub use:
python -m pip install git+https://github.com/andyrids/dataclocklib.git
Astral uv is used as the Python package manager. To install uv see the installation guide @ uv documentation.
Clone the repository:
git clone [email protected]:andyrids/dataclocklib.git
cd dataclocklib
Sync the dependencies, including the dev dependency group and optional dependencies with uv:
uv sync --all-extras
Activate the virtual environment:
. .venv/bin/activate
cd docs
make html