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

Uploaded Python 3

File details

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

File metadata

  • Download URL: odyssey_viz_armand-0.3.0.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.0.tar.gz
Algorithm Hash digest
SHA256 e18716b40366a7931f69ae8df638369e254f75b1f5506bf42e631b7b29307e47
MD5 2660b36c4193427f5ddc6327b473c163
BLAKE2b-256 8fafa741f9fd1d89391884176836e3beff5021ec98f2a5914875034ebc5c7651

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for odyssey_viz_armand-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 448f9a5bee7306f52620662af8f77672e98e3aa9694d3626c1a2a78a1177b3df
MD5 070e2d9283fa5dd72cd40602b2cbb787
BLAKE2b-256 57f3929bf08ef883803946da9f7f58b571bbf3a7cb31fd24bf3d49002c462370

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