Skip to main content

An Altair theme and chart utility library for publication-ready scientific figures.

Project description

dysonsphere

dysonsphere

dysonsphere is an altair utility library for publication-ready scientific figures in Python, offering:

  • An attractive, cohesive, and sensible default configuration with a single invocation of ds.theme().
  • Perceptually uniform palettes, including those from popular data visualization libraries.
  • Shareable styles through a simple dysonsphere.toml config file - tune the theme once and reuse it across projects.

dysonsphere also comes with several intuitive and powerful utilities for altair charts; some highlights include:

  • The ability to quickly and easily layer altair charts with annotations like reference lines, shades, text, and data labels.
  • Statistical inference with scipy, layered directly onto alt.Chart and conveniently exported as metadata in your saved chart:
    • Omnibus tests with effect sizes.
    • Brackets and p-values for pairwise and post hoc comparisons.
    • Correlations with fit lines.
  • Multilabels that allow for rich annotations of categorical labels, e.g. multi-condition axes and sample sizes.
  • Self-documenting exports for reproducible figures:
    • ds.save() writes a corrected SVG, print-ready PNG, interactive HTML, and/or Vega-Lite JSON, while also embedding the output file with its provenance: environment versions and sha256 checksums fingerprint both the Vega-Lite spec and the underlying data.
    • ds.read() recovers the statistics report, metadata, and even the original data from a saved figure.
    • ds.load() rebuilds the chart from its JSON.

dysonsphere is extensible: you can develop and install packages of field-specific plotting toolkits (e.g. molecular biology, astronomy) for altair, which plug into the same theme, palettes, and export pipeline that core dysonsphere provides.

Installation

# with pip
pip install dysonsphere

# with uv
uv pip install dysonsphere

# add as a project dependency
uv add dysonsphere

Requires Python 3.11+. Every function that takes a DataFrame accepts polars or pandas.

Dependencies:

  • altair>=5.5.0
  • numpy>=1.26.0
  • polars[pyarrow]>=1.19.0
  • scipy>=1.11.0
  • vl-convert-python>=1.7.0

Quick start

import altair as alt
import polars as pl
import dysonsphere as ds

ds.theme()  # apply the dysonsphere theme to all charts in the session

df = pl.DataFrame({"x": [1.2, 2.4, 3.1, 4.8], "y": [0.9, 2.2, 2.8, 4.4]})

chart = (
    alt.Chart(df)
    .mark_point()
    .encode(
        x="x:Q",
        y="y:Q",
        color=alt.Color("y:Q", scale=alt.Scale(range=ds.palette("blues"))),
    )
)

ds.save(chart, "myplot") # writes myplot.svg + myplot.json

Documentation

Documentation, examples, palettes, and an interactive chart studio at dkkung.github.io/dysonsphere

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

dysonsphere-3.3.0.tar.gz (11.6 MB view details)

Uploaded Source

Built Distribution

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

dysonsphere-3.3.0-py3-none-any.whl (130.7 kB view details)

Uploaded Python 3

File details

Details for the file dysonsphere-3.3.0.tar.gz.

File metadata

  • Download URL: dysonsphere-3.3.0.tar.gz
  • Upload date:
  • Size: 11.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.27 {"installer":{"name":"uv","version":"0.11.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for dysonsphere-3.3.0.tar.gz
Algorithm Hash digest
SHA256 fd5cb6d49bc0585042676fc515893537d1182a61a048a684bfeb67df789ab19e
MD5 ef5fe1a03019610a2fec242d3a10d99b
BLAKE2b-256 818148a93867a91fb3231c2e95789013115890cb7256996b88f0379e30f8dac9

See more details on using hashes here.

File details

Details for the file dysonsphere-3.3.0-py3-none-any.whl.

File metadata

  • Download URL: dysonsphere-3.3.0-py3-none-any.whl
  • Upload date:
  • Size: 130.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.27 {"installer":{"name":"uv","version":"0.11.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for dysonsphere-3.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6b7f3f18a4a2587f1cfebfcedc5223bd4ee3768ae82430b1a8344e4d802d46d3
MD5 644059a04ebee604f48fa07fd9a2be5a
BLAKE2b-256 5545ff024d07facca86bc8900d3eedfc780ebcc38ac542e40a5c4e340c1d5191

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