Skip to main content

Interactive Graphviz visualization widget for Jupyter notebooks using anywidget.

Project description

graphviz-anywidget

PyPI version Python Version License

Interactive Graphviz visualization widget for Jupyter notebooks using anywidget. Graphviz is provided via WASM (hpcc-js-wasm) and the rendering is done using graphvizsvg and d3-graphviz.

Features

  • 🎨 Interactive SVG visualization of Graphviz DOT graphs
  • 🔍 Search functionality with regex support
  • 🎯 Node and edge highlighting
  • ↔️ Directional graph traversal
  • 🔄 Zoom reset functionality
  • 📱 Responsive design
  • 🎨 Smooth animations and transitions
  • 💻 Works in JupyterLab and Jupyter Notebook

Installation

pip install graphviz-anywidget

or with uv:

uv add graphviz-anywidget

Usage

from graphviz_anywidget import graphviz_widget

# Create a widget with a DOT string
dot_string = """
digraph {
    a -> b;
    b -> c;
    c -> a;
}
"""
widget = graphviz_widget(dot_string)
widget

Features

  1. Search: Use the search box to find nodes and edges

    • Supports exact match, substring, and regex search
    • Case-sensitive option available
  2. Direction Selection: Choose how to traverse the graph

    • Bidirectional: Show connections in both directions
    • Downstream: Show only outgoing connections
    • Upstream: Show only incoming connections
    • Single: Show only the selected node
  3. Zoom Reset: Reset the graph to its original position and scale

API

graphviz_widget

def graphviz_widget(dot_string: str = "digraph { a -> b; }") -> widgets.VBox:
    """Create an interactive Graphviz widget.

    Parameters
    ----------
    dot_string
        The DOT string representing the graph

    Returns
    -------
    widgets.VBox
        The widget containing the graph and controls
    """

Dependencies

  • anywidget
  • ipywidgets
  • graphvizsvg (npm package)
  • d3-graphviz (npm package)
  • hpcc-js-wasm (npm package)

Development

We recommend using uv for development. It will automatically manage virtual environments and dependencies for you.

uv run jupyter lab example.ipynb

Alternatively, create and manage your own virtual environment:

python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
jupyter lab example.ipynb

The widget front-end code bundles it's JavaScript dependencies. After setting up Python, make sure to install these dependencies locally:

npm install

While developing, you can run the following in a separate terminal to automatically rebuild JavaScript as you make changes:

npm run dev

Open example.ipynb in JupyterLab, VS Code, or your favorite editor to start developing. Changes made in js/ will be reflected in the notebook.

Implementation Notes

  • The WASM binary is embedded in the JavaScript bundle as base64
  • We override the fetch API to intercept WASM file requests
  • Web Worker mode is disabled to ensure consistent WASM loading
  • This approach works in any Jupyter environment without needing a separate file server

License

MIT

Credits

Built with:

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

graphviz_anywidget-0.1.0.tar.gz (686.0 kB view details)

Uploaded Source

Built Distribution

graphviz_anywidget-0.1.0-py3-none-any.whl (687.7 kB view details)

Uploaded Python 3

File details

Details for the file graphviz_anywidget-0.1.0.tar.gz.

File metadata

  • Download URL: graphviz_anywidget-0.1.0.tar.gz
  • Upload date:
  • Size: 686.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for graphviz_anywidget-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5b588a63c25014e9c4a9e13086bacad60c53e740e3afe0d4c56bc88f5f9cfe88
MD5 41f2742417475fa648ac0df81d980c10
BLAKE2b-256 724b43acd8ec6fae83c1b9c60fea2c70eaa901c71367c54b06978307a8c9f2f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for graphviz_anywidget-0.1.0.tar.gz:

Publisher: pythonpublish.yml on pipefunc/graphviz-anywidget

Attestations:

File details

Details for the file graphviz_anywidget-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for graphviz_anywidget-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bfcdb3113cc3108cd60ce59da290e974866dff877cf9bacce646333dc447fc18
MD5 74a05be6b18158da0c00bfe3f1e7f113
BLAKE2b-256 bde5bf8b9731f95d485ad0a3357ae28dc965c6509ce99ab5d2fa6d6fb18048f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for graphviz_anywidget-0.1.0-py3-none-any.whl:

Publisher: pythonpublish.yml on pipefunc/graphviz-anywidget

Attestations:

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page