On dirait qu'il devrait y avoir une méthode dans networkx pour exporter le format graphique json, mais je ne le vois pas. J'imagine que cela devrait être facile à faire avec nx.to_dict_of_dicts(), mais cela nécessiterait un peu de manipulation. Quelqu'un sait-il d'une solution simple et élégante?Méthode pour enregistrer networkx graph to json graph?
16
A
Répondre
1
Les nœuds et les bords sont-ils suffisamment d'informations? Si oui, vous pouvez écrire votre propre fonction:.
json.dumps(dict(nodes=graph.nodes(), edges=graph.edges()))
5
Voici une approche JSON que je viens de faire, en même temps que le code pour lire les résultats de retour dans Il enregistre les attributs de nœud et de bord, dans le cas où vous avez besoin que .
import simplejson as json
import networkx as nx
G = nx.DiGraph()
# add nodes, edges, etc to G ...
def save(G, fname):
json.dump(dict(nodes=[[n, G.node[n]] for n in G.nodes()],
edges=[[u, v, G.edge[u][v]] for u,v in G.edges()]),
open(fname, 'w'), indent=2)
def load(fname):
G = nx.DiGraph()
d = json.load(open(fname))
G.add_nodes_from(d['nodes'])
G.add_edges_from(d['edges'])
return G
14
Cette documentation contient une description complète
Un exemple simple est la suivante:
import networkx as nx
from networkx.readwrite import json_graph
DG = nx.DiGraph()
DG.add_edge('a', 'b')
print json_graph.dumps(DG)
Vous pouvez également jeter un oeil à l'Javascript/SVG/D3 bel exemple sur l'ajout de la physique à la visualisation graphique.
2
En général, j'utiliser le code suivant:
import networkx as nx;
from networkx.readwrite import json_graph;
G = nx.Graph();
G.add_node(...)
G.add_edge(...)
....
json_graph.node_link_data(G)
il va créer le graphique au format JSON dans lequel les noeuds sont en nodes
et arêtes dans links
en plus d'autres informations sur le graphique (directionnalité, ... etc)
1
Essayez ceci:
# Save graph
nx.write_gml(G, "path_where_graph_should_be_saved.gml")
# Read graph
G = nx.read_gml('path_to_graph_graph.gml')
Quel est exactement le format graphique JSON? – fmark
essentiellement une liste de nœuds et adjacences, mais sorta confus avec une version simple et une version étendue: http://thejit.org/static/v20/Docs/files/Loader/Loader-js.html – Bob