neo4j-viz
is a Python package for creating interactive graph visualizations based on data from Neo4j products.
The output is of type IPython.display.HTML
and can be viewed directly in a Jupyter Notebook, Streamlit.
Alternatively, you can export the output to a file and view it in a web browser.
The package wraps the Neo4j Visualization JavaScript library (NVL).
Warning
This package is still in development and the API is subject to change.
- Easy to import graphs represented as:
- projections in the Neo4j Graph Data Science (GDS) library
- graphs from Neo4j query results
- pandas DataFrames
- Node features:
- Sizing
- Colors
- Captions
- Pinning
- On hover tooltip
- Relationship features:
- Colors
- Captions
- On hover tooltip
- Graph features:
- Zooming
- Panning
- Moving nodes
- Using different layouts
- Additional convenience functionality for:
- Resizing nodes, optionally including scale normalization
- Coloring nodes based on a property
- Toggle whether nodes should be pinned or not
Please note that this list is by no means exhaustive.
Simply install with pip:
pip install neo4j-viz
We will use a small toy graph representing the purchase history of a few people and products.
We start by instantiating the Nodes and Relationships we want in our graph. The only mandatory fields for a node are the "id", and "source" and "target" for a relationship. But the other fields can optionally be used to customize the appearance of the nodes and relationships in the visualization.
Lastly we create a
VisualizationGraph object with the
nodes and relationships we created, and call its render
method to display the graph.
from neo4j_viz import Node, Relationship, VisualizationGraph
nodes = [
Node(id=0, size=10, caption="Person"),
Node(id=1, size=10, caption="Product"),
Node(id=2, size=20, caption="Product"),
Node(id=3, size=10, caption="Person"),
Node(id=4, size=10, caption="Product"),
]
relationships = [
Relationship(
source=0,
target=1,
caption="BUYS",
),
Relationship(
source=0,
target=2,
caption="BUYS",
),
Relationship(
source=3,
target=2,
caption="BUYS",
),
]
VG = VisualizationGraph(nodes=nodes, relationships=relationships)
VG.render()
This will return a IPython.display.HTML
object that can be rendered in a Jupyter Notebook or streamlit application.
Please refer to the documentation for more details on the API and usage.
For some Jupyter Notebook and streamlit examples, checkout the /examples directory.
If you would like to contribute to this project, please follow our Contributor Guidelines.