mise en page de transfert de NetworkX à Cytoscape
-
27-10-2019 - |
Question
Je veux utiliser NetworkX pour générer une mise en page pour un graphique. Est-il possible de transférer cette mise en page Cytoscape et d'en tirer là? J'ai essayé d'écrire simplement un graphique comme
import networkx as nx
G = nx.Graph()
G.add_edge(0,1,weight=.1)
G.add_edge(2,1,weight=.2)
nx.write_gml(G,'g.gml')
nx.write_graphml(G,'g.xml')
Mais aucun de ceux-ci est lu dans Cytoscape. Je ne sais pas comment transférer le graphique dans un format qui peut inclure des positions.
La solution
Votre g.xml
fichier graphml semble bon, et les charges en Cytoscape pour moi (je suis sur un Mac). Avez-vous installé le graphmlreader plugin?
Sinon, téléchargez-le et déposez-le dans vos plugins dossier, puis redémarrez Cytoscape et essayez de charger à nouveau le réseau g.xml
.
Mise à jour Voici un code pour ajouter les graphismes et la convivialité et le positionnement à un graphique NetworkX. Il est un peu bavard, et vous pouvez être en mesure d'omettre certains des attributs en fonction de vos besoins:
import networkx as nx
G = nx.Graph()
G.add_edge(0, 1, weight=0.1, label='edge', graphics={
'width': 1.0, 'fill': '"#0000ff"', 'type': '"line"', 'Line': [],
'source_arrow': 0, 'target_arrow': 0})
nx.set_node_attributes(G, 'graphics', {
0: {'x': -85.0, 'y': -97.0, 'w': 20.0, 'h': 20.0,
'type': '"ellipse"', 'fill': '"#889999"', 'outline': '"#666666"',
'outline_width': 1.0},
1: {'x': -16.0, 'y': -1.0, 'w': 40.0, 'h': 40.0,
'type': '"ellipse"', 'fill': '"#ff9999"', 'outline': '"#666666"',
'outline_width': 1.0}
})
nx.set_node_attributes(G, 'label', {0: "0", 1: "1"})
nx.write_gml(G, 'network.gml')
Résultat: