Skip to main content

Four matplotlib charts in one dark, Bronze Age house style.

Project description

odyssey-viz

Four matplotlib charts in one dark, Bronze Age house style — cold black frame, hammered bronze, Aegean steel, and a faint layer of 70mm film grain.

Install name is odyssey-viz-armand (hyphens, for pip). Import name is odyssey_viz (underscores, for Python).

Install

pip install odyssey-viz-armand

Or, working from a clone of this repo:

python -m pip install -e .

Use

import odyssey_viz as ov

ov.use_theme()                  # apply the style to matplotlib
df = ov.sample_box_office()     # every film Nolan has directed

ax = ov.bars(df, x="title", y="worldwide_musd", title="Two films past a billion")
ov.save(ax, "gross.png")

Every chart takes a pandas DataFrame and returns a matplotlib Axes, so you can keep working on it with plain matplotlib afterwards.

The four charts

Function What it draws
bars(df, x, y) Ranked horizontal bars; the top bar stays bright, the rest cool off
line(df, x, y, group=None) A line over an ordered column, one per category if you pass group
scatter(df, x, y, color=None, size=None) Points, optionally colored by category and sized by a numeric column
histogram(df, column, bins=12) Distribution of one column, with the mean marked

All four also take title=, subtitle=, and ax=.

Supporting functions

  • use_theme(name="ithaca", grain=True) — apply the style. grain=False turns off the film grain.
  • palette(name) / current_palette() — the hex colors, if you want to reuse them.
  • save(ax, path, dpi=200) — write the chart out at presentation resolution.
  • sample_box_office() — the built-in dataset used in every example here.

The sample dataset

sample_box_office() returns one row per Christopher Nolan feature, with title, year, studio, runtime_min, budget_musd, domestic_musd, and worldwide_musd. It is here to give the charts something to draw.

The figures come from public box office reporting, compiled 2026-07-31. Grosses are lifetime and include re-releases; budgets are production budgets and exclude marketing; studio is the lead domestic distributor, which simplifies two films that split distributors by territory. The Odyssey is still in theaters, so its row is a snapshot that goes stale immediately. Verify against a primary source before citing any of it.

Palettes

Name Reads as
ithaca (default) Bronze against cold sea metal
aegean Sea and sky; water, distance, time
underworld Bone, ash, and rust; for grim subjects
ov.use_theme("aegean")

Gallery

Rendered by python examples/make_gallery.py.

Ranked bars Line Scatter Histogram

Development

python -m pip install -e ".[dev]"
python -m pytest -q          # 10 tests
python -m build              # writes dist/*.whl and dist/*.tar.gz
python -m twine check dist/* # check before uploading

Publish to TestPyPI first, then PyPI:

python -m twine upload --repository testpypi dist/*
python -m twine upload dist/*

Use an API token, never a password, and never commit the token.

License

MIT — see LICENSE.

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

odyssey_viz_armand-0.3.1.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

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

odyssey_viz_armand-0.3.1-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file odyssey_viz_armand-0.3.1.tar.gz.

File metadata

  • Download URL: odyssey_viz_armand-0.3.1.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.9

File hashes

Hashes for odyssey_viz_armand-0.3.1.tar.gz
Algorithm Hash digest
SHA256 dff130cf2b864a20bc7c58dbd0687fc9c59431b06d4db96aa10546cdd992f51e
MD5 6e93f91670748b3397bcb1602cca5861
BLAKE2b-256 98ca94f093c2ac9df23c5b9c5fcfa12196a6f336e5604d75e627ccf91a050540

See more details on using hashes here.

File details

Details for the file odyssey_viz_armand-0.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for odyssey_viz_armand-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 84c64c171f03f6f2b6c7f706bfeacce3c7f04a4b32f3d8e7cebe96ed76e945da
MD5 ef1d352ee5579036077276985cee34fb
BLAKE2b-256 7b0adc99978525e2e73062cdbde639cd7a624b5e6eade709e00fccfe811be45e

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