Skip to content

jacquesfize/sigmajs_for_dash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SigmaJS for Dash

SigmaJS for Dash is a component that bring SigmaJS network fast renderer to your Dash app.

Available features :

  • Highlight node neighbors by clicking it
  • Zoom on a node (or given coordinates) to emphasize part of your network right at the beginning
  • Node searching features
  • Works with networkx graph

Setup

Run the following command to install the component.

pip install git+https://github.com/Jacobe2169/sigmajs_for_dash

Get Started

Try it !

A demo is available in the usage.py script. Just run the command :

python usage.py

The application should render a network like the animated gif below.

Screenshot of the app in usage.py

Use the component

Let's start with a simple Dash application. We'll use the following script.

from sigmajs_for_dash import SigmaJSComponent from sigmajs_for_dash.utils import networkx2Sigma from dash import Dash, html import networkx as nx import json app = Dash(__name__) app.layout = html.Div([ html.H1("Hello World") ]) if __name__ == '__main__': app.run_server(debug=True)

SigmaJS only accepts network data in JSON format. Therefore, there are two options:

  1. Create a Python dictionary following the JSON format described here.
{ "attributes": { # Graph attributes "name": "place holder" }, "options": { "multi": False, "allowSelfLoops": True, "type": "directed" }, "nodes": [ # Nodes declaration { "key": "53", # node id "attributes": { "label": "Changement Climatique", # node label (displayed on screen) "x": 639.0149, # node x position "y": -703.6634, # node y position "size": 99.99999, # node size (displayed on screen) "color": "#66ff66", # node color (displayed on screen) # Check SigmaJS's documentation for other graphical customization options  } }, #... ], "edges":[ # Edges declaration { "key": "0", # edge id "source": "0", # edge source "target": "1", # edge target "attributes": {# edge attributes "weight": 1.0 } }, //... ]
  1. Use the networkx library and its networkx.Graph object. The latter requires the networkx2Sigma() function to convert the networkx graph into a SigmaJS usable dictionary.
# Using networkx  G = nx.karate_club_graph() data = networkx2Sigma(G)

Once your network data is ready, simply add the component in your Dash app layout :

app.layout = html.Div( [ html.H1("Hello"), SigmaJSComponent( id='graph_container',label="graph_container", graph_data=data,style={"height":"600px","width":"600px"} ) ] )

Acknowledgments

This library is a simple wrapper around the fabulous SigmaJS(+ graphology) library proposed by the Sciences-Po Médialab and OuestWare. Check their website !

About

Component to use SigmaJS in your Dash application

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published