Skip to main content

Mathematical optimization for data visualization

Project description

vizopt

Mathematical optimization for data visualization, specifically designed for graph layouts with hierarchical inclusion constraints ("bubble layouts").

Uses JAX for automatic differentiation and JIT compilation to efficiently optimize layouts via gradient descent.

Read the documentation https://spectalizer.github.io/vizopt/.

Installation

pip install vizopt

Quick Start

import numpy as np
from vizopt.templates import circle_packing

# Define circle radii
rng = np.random.default_rng(0)
radii = rng.uniform(0.1, 1.0, size=20).tolist()

# Pack circles to minimize overlap and bounding box size
positions = circle_packing.optimize_circle_packing(
    radii=radii,
    weight_total_size=10.0,
    collision_offset=0.05,
    optim_kwargs={"n_iters": 3000, "learning_rate": 0.01},
)
# positions is a list of (x, y) tuples, one per circle

Features

  • Multi-objective optimization (edge lengths, compactness, collision avoidance, inclusion constraints)
  • Efficient JAX-based gradient descent with JIT compilation
  • Handles arbitrary hierarchical inclusion relationships
  • NetworkX integration

Examples

See examples/examples_with_bubbles.ipynb for detailed usage.

License

MIT

For developers

Documentation

Using Zensical.

uv run zensical serve

uv run python scripts/nb_to_md.py --execute examples/circle_packing.ipynb docs/examples/from-notebook-circle-packing.md

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

vizopt-0.0.3.tar.gz (44.2 kB view details)

Uploaded Source

Built Distribution

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

vizopt-0.0.3-py3-none-any.whl (55.8 kB view details)

Uploaded Python 3

File details

Details for the file vizopt-0.0.3.tar.gz.

File metadata

  • Download URL: vizopt-0.0.3.tar.gz
  • Upload date:
  • Size: 44.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for vizopt-0.0.3.tar.gz
Algorithm Hash digest
SHA256 4607b0abed0bb2af6ce9c20436f7ab7afa42b336c63ca4ff255bf280b10caeba
MD5 581666aae4068235ac69b622b0fcea65
BLAKE2b-256 41e18a8c41514564b9d7e0b47918252abcd0b44cba796ecc118f6d3ab58a2aa7

See more details on using hashes here.

File details

Details for the file vizopt-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: vizopt-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 55.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for vizopt-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 bfecf1a344203017202e171f1307f461b582b0ac48cd3f176878b63a5c939fb0
MD5 0f4eb94a07b4bd48e5efb3a4f1675a7c
BLAKE2b-256 0a34be0314c0b62b5e3bc60ccc61f861a4019fff54687177c8a74fd69b5adf67

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