Skip to main content

A Python wrapper for rendering NetworkX graphs interactively using vis.js.

Project description

NX-VIS Visualizer

uv pre-commit.ci CI & Deploy Netlify Status PyPI version License: MIT

NX-VIS Visualizer is a Python library designed to bridge the gap between NetworkX, a powerful graph manipulation library, and vis.js Network, a dynamic, browser-based visualization library. It allows you to easily render your NetworkX graphs as interactive HTML files or embed them directly into Jupyter Notebooks.

View the Documentation & Live Examples

Key Features

  • Seamless Conversion: Effortlessly convert NetworkX Graph and DiGraph objects into a format compatible with vis.js.
  • Rich Customization: Leverage the extensive vis.js Network options to tailor the appearance and behavior of your graphs (nodes, edges, layout, physics, interaction, etc.).
  • Node & Edge Styling: Apply vis.js styling attributes directly to your NetworkX nodes and edges.
  • Self-Contained HTML: Generate standalone HTML files that can be easily shared or embedded.
  • Jupyter Notebook Integration: Display interactive graphs directly within your Jupyter Notebooks or IPython environments.
  • Interactive Exploration: Enables panning, zooming, node dragging (if physics allows), and information display on hover/click.
  • Configurable UI: Optionally include a vis.js configuration panel within the generated HTML to tweak graph settings live in the browser.

Installation

You can install NX-VIS Visualizer using pip:

pip install nx-vis-visualizer

Alternatively, for development or to install from source:

git clone https://github.com/ParticularlyPythonicBS/nx-vis-visualizer.git
cd nx-vis-visualizer
uv pip install -e .

Quick Start

Here's a basic example of how to visualize a simple NetworkX graph:

import networkx as nx
from nx_vis_visualizer import nx_to_vis

# 1. Create a NetworkX graph
G = nx.cycle_graph(5)

# Add some basic attributes for visualization
for i, node_id in enumerate(G.nodes()):
    G.nodes[node_id]['label'] = f'Node {i+1}'
    G.nodes[node_id]['title'] = f'This is Node {i+1}' # Tooltip
    G.nodes[node_id]['group'] = i % 2

G.edges[0,1]['label'] = 'Link 0-1'
G.edges[0,1]['color'] = 'red'

# 2. Define (optional) vis.js options
custom_options = {
    "nodes": {"font": {"size": 16}},
    "edges": {"smooth": {"enabled": True}},
    "groups": {
        0: {"color": "skyblue", "shape": "dot"},
        1: {"color": "lightgreen", "shape": "square"}
    },
    "interaction": {"navigationButtons": True, "hover": True},
    "physics": {"enabled": True}
}

# 3. Generate and show the interactive HTML graph
# This will create 'cycle_graph.html' and open it in your browser.
nx_to_vis(
    G,
    output_filename="cycle_graph.html",
    html_title="My Interactive Cycle Graph",
    vis_options=custom_options,
    show_browser=True
)

# To get HTML for a Jupyter Notebook:
# html_output = nx_to_vis(G, vis_options=custom_options, notebook=True, show_browser=False)
# if html_output:
#     from IPython.display import HTML
#     display(HTML(html_output))

For more detailed examples, including directed graphs and advanced customizations, please see the Documentation.

Documentation

Full documentation, including API references and more examples, is available at: https://nx-vis-visualizer.netlify.app/

The documentation covers:

  • Installation
  • Basic Usage
  • Styling Nodes and Edges
  • Using vis.js Options
  • Directed Graphs
  • Advanced Customization
  • Jupyter Notebook Integration
  • API Reference

Contributing

Contributions are welcome! Whether it's bug reports, feature requests, documentation improvements, or code contributions, please feel free to open an issue or submit a pull request.

To set up for development:

  1. Clone the repository:

    git clone https://github.com/ParticularlyPythonicBS/nx-vis-visualizer.git
    cd nx-vis-visualizer
    
  2. Install dependencies using uv:

    uv sync --all-extras --dev
    uv pip install -e . --no-deps
    
  3. Set up pre-commit hooks for code formatting and linting:

    uv run pre-commit install
    
  4. Run tests:

    uv run pytest tests
    

Please ensure your contributions pass all tests and adhere to the coding style (enforced by pre-commit hooks).

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgements

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

nx_vis_visualizer-0.1.2.tar.gz (17.2 kB view details)

Uploaded Source

Built Distribution

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

nx_vis_visualizer-0.1.2-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file nx_vis_visualizer-0.1.2.tar.gz.

File metadata

  • Download URL: nx_vis_visualizer-0.1.2.tar.gz
  • Upload date:
  • Size: 17.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.12

File hashes

Hashes for nx_vis_visualizer-0.1.2.tar.gz
Algorithm Hash digest
SHA256 2b90062e71a8ecd46086d23f0e6a033219ef9cfe849743f3128f649f777f864b
MD5 06c26a236c5b60a9f7f8bc060ad1e6b2
BLAKE2b-256 24f79373bc67839698a9dd376e54f8150ab02c2f8437ba729236397607826ed2

See more details on using hashes here.

File details

Details for the file nx_vis_visualizer-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for nx_vis_visualizer-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d9f3fd0c5c933b33b02a431580e3c7474fba68ba1effd6d89720137f194104cd
MD5 0123be3974580edad0d4a50c83ba35fe
BLAKE2b-256 c0fcb7fb3db959e753b26a24dfde0478c6e6ef0da71ee7b323654b80c96a8388

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