41 lines
1 KiB
Python
41 lines
1 KiB
Python
|
"""
|
||
|
==========
|
||
|
Javascript
|
||
|
==========
|
||
|
|
||
|
Example of writing JSON format graph data and using the D3 Javascript library
|
||
|
to produce an HTML/Javascript drawing.
|
||
|
|
||
|
You will need to download the following directory:
|
||
|
|
||
|
- https://github.com/networkx/networkx/tree/master/examples/javascript/force
|
||
|
"""
|
||
|
import json
|
||
|
|
||
|
import flask
|
||
|
import networkx as nx
|
||
|
from networkx.readwrite import json_graph
|
||
|
|
||
|
G = nx.barbell_graph(6, 3)
|
||
|
# this d3 example uses the name attribute for the mouse-hover value,
|
||
|
# so add a name to each node
|
||
|
for n in G:
|
||
|
G.nodes[n]["name"] = n
|
||
|
# write json formatted data
|
||
|
d = json_graph.node_link_data(G) # node-link format to serialize
|
||
|
# write json
|
||
|
json.dump(d, open("force/force.json", "w"))
|
||
|
print("Wrote node-link JSON data to force/force.json")
|
||
|
|
||
|
# Serve the file over http to allow for cross origin requests
|
||
|
app = flask.Flask(__name__, static_folder="force")
|
||
|
|
||
|
|
||
|
@app.route("/")
|
||
|
def static_proxy():
|
||
|
return app.send_static_file("force.html")
|
||
|
|
||
|
|
||
|
print("\nGo to http://localhost:8000 to see the example\n")
|
||
|
app.run(port=8000)
|