A Python wrapper for rendering NetworkX graphs interactively using vis.js.
Project description
NX-VIS Visualizer
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
GraphandDiGraphobjects 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:
-
Clone the repository:
git clone https://github.com/ParticularlyPythonicBS/nx-vis-visualizer.git cd nx-vis-visualizer
-
Install dependencies using uv:
uv sync --all-extras --dev uv pip install -e . --no-deps
-
Set up pre-commit hooks for code formatting and linting:
uv run pre-commit install
-
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
- NetworkX development team.
- vis.js Network library and its contributors.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nx_vis_visualizer-0.1.0.tar.gz.
File metadata
- Download URL: nx_vis_visualizer-0.1.0.tar.gz
- Upload date:
- Size: 17.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
701244f868ab3fa8cf8e09d2c8511f5075a0279f5f9a5266153963931ea655ce
|
|
| MD5 |
90632269317e12617c86289d1086f3de
|
|
| BLAKE2b-256 |
9e63cbbef9620e157aa250a8533213433c6324cdff70fa66b3908a3b4b2cf920
|
File details
Details for the file nx_vis_visualizer-0.1.0-py3-none-any.whl.
File metadata
- Download URL: nx_vis_visualizer-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f22eda03926a12b98e8f46876c7832a35f16482045018051afc8526b5d552e0a
|
|
| MD5 |
1120db73f99cabe6cc4bdf8073068af4
|
|
| BLAKE2b-256 |
d8ae5dd17b2939e7cd82f9e7f01209880905c42e6a79d2595d0e8611f58a3a3c
|