Draw neo4j graphs with vis.js
Project description
:snake: neo4jvis
Installation
Neo4jvis requires Neo4j driver. You can install neo4jvis with:
pip install neo4jvis
Usage
Here's how you can use it: First import libraries, initialise the driver and create the graph container:
1. Import and init
from neo4j import GraphDatabase
from neo4jvis.model.styled_graph import StyledGraph
driver = GraphDatabase.driver(uri="bolt://url:port", auth=("my user", "my pass"))
graph = StyledGraph(driver)
2. Retrieve graph from neo4j
2.1 Retrieve whole graph
Here's how you can generate an html file with all the nodes and relationships of the database:
graph.generate_whole_graph()
graph.draw("output.html")
2.2 Generate graph from a query
Here's is how you can generate a graph from a given query provided by the developer:
QUERY = "MATCH p=()-[]->() RETURN p"
graph.add_from_query(QUERY)
graph.draw("output.html")
3. Style graph
3.1 Change nodes color
RED = "#ff0000"
WHITE = "#FFFFFF"
for node in list(graph.nodes.values()):
node["color"] = {
"border": WHITE,
"background": RED
}
graph.draw("output.html")
3.2 Change nodes size
for node in list(graph.nodes.values()):
node["value"] = randrange(1, 10)
graph.draw("output.html")
3.3. Change other node properties supported by vis.js
Neo4jvis supports all the options for nodes of vis.js.
Example usage:
node["shape"] = "triangle"
node["borderWidth"] = 10
node["label"] = "EXAMPLE"
node["font"] = {
"color": "#e8c2b0",
"size": 20,
}
graph.draw("output.html")
3.4. Change edge properties
for edge in graph.edges:
edge["value"] = random.randrange(1, 10)
edge["color"] = {
"color": "#e8c2b0"
}
graph.draw("output.html")
3.5. Change other edge properties
Similarly, as with nodes, neo4jvis supports all the options for edges of vis.js.
4. Change graph options
Graphs come with a default set of options defined in options
property:
>>> print(graph.options)
{
'nodes': ...
'edges': ...
'interaction': ...
'physics': ...
}
See the available options for graphs supported by vis.js.
Example usage:
graph.options["directed"] = "false"
Advanced usage
Generate graph from neomodel StructuredRel
Neomodel is a Object Graph Mapper for Neo4j database. Neo4jvis allows the retrieval of the network from a list of neomodel StructuredRel objects. Here's an example of the usage:
class Connected(StructuredRel):
pass
class Usuarios(StructuredNode):
id = StringProperty()
connected = RelationshipTo("Usuarios", "CONNECTED", model = Connected)
QUERY = """
MATCH (n1:Usuarios)-[r:CONNECTED]->()
RETURN r
"""
Z = neomodel.db.cypher_query(
QUERY,
resolve_objects=True)
relationships_list = [rel[0] for rel in Z[0]]
graph.add_from_neomodel_relationships(relationships_list)
graph.draw("output.html")
Project details
Release history Release notifications | RSS feed
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
Hashes for neo4jvis-0.0.0a4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 800d98678f9f5dfc5dd4a6b0102178a49082dcad0364d81a9593a78604f39288 |
|
MD5 | 40f032d8ee0a74507379707c185d58f9 |
|
BLAKE2b-256 | 4637b7751ee10eb3561d0fd24f1fd7994869e874d5ff2b70332695cecf9d792b |