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, inspired by the VS Code extension Graphviz Interactive Preview.

https://github.com/user-attachments/assets/74cf39c5-2d64-4c98-b3ee-cf7308753da6

https://github.com/user-attachments/assets/8947dfd1-5d4a-43b9-b0c7-22cb52f72dc3

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, Jupyter Notebook, and VS Code

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_source = """
digraph {
    a -> b;
    b -> c;
    c -> a;
}
"""
widget = graphviz_widget(dot_source)
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_source: str = "digraph { a -> b; }") -> widgets.VBox:
    """Create an interactive Graphviz widget.

    Parameters
    ----------
    dot_source
        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.

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.7.0.tar.gz (694.1 kB view details)

Uploaded Source

Built Distribution

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

graphviz_anywidget-0.7.0-py3-none-any.whl (695.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: graphviz_anywidget-0.7.0.tar.gz
  • Upload date:
  • Size: 694.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for graphviz_anywidget-0.7.0.tar.gz
Algorithm Hash digest
SHA256 3c1b235f3445c3b0f70a7017407d65dfb2821d1caa4282d8d73d75b4361aebbf
MD5 228fe921eb1a712541858888c850b1ae
BLAKE2b-256 ac4dc3ca63bb6871f3f67cf5093d98d2069904571344d6937c518ee18a0d4377

See more details on using hashes here.

Provenance

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

Publisher: pythonpublish.yml on pipefunc/graphviz-anywidget

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for graphviz_anywidget-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c499dfde832a0aa91f794a9e94fb38c7436c8aea2a7b7a6352cbe19ed9baa4a3
MD5 77d9846198228a9b2f8d2e83ae59e0bb
BLAKE2b-256 2f20c17e6ec513361516cf6bc8441e3fd30caa81ed0648ed19acd145cc7e7866

See more details on using hashes here.

Provenance

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

Publisher: pythonpublish.yml on pipefunc/graphviz-anywidget

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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