Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

neo4jvis-0.0.1.tar.gz (155.0 kB view details)

Uploaded Source

Built Distribution

neo4jvis-0.0.1-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file neo4jvis-0.0.1.tar.gz.

File metadata

  • Download URL: neo4jvis-0.0.1.tar.gz
  • Upload date:
  • Size: 155.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.12

File hashes

Hashes for neo4jvis-0.0.1.tar.gz
Algorithm Hash digest
SHA256 119e7177f8d4966f8eb74df5937fda00f9e110f50358b473835956729c70b342
MD5 4c9ea94c802b99fb26ac680395094699
BLAKE2b-256 d200304f937603235c5f80c78c7bcba385bec6ab435594fc62d983371efccce5

See more details on using hashes here.

File details

Details for the file neo4jvis-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: neo4jvis-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.12

File hashes

Hashes for neo4jvis-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6b10fe0e15c5197c0a0e7a7c8f5775142783992ef37c886229579f3f8b910d3f
MD5 694d2401bafec90acf0474f29ceb0fa1
BLAKE2b-256 3b9e0042b01dae1d8925e1e0a3c6d2e979d3e23dba576dc9ba74dd1e2f225bcf

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page