Transferencia de diseño de NetworkX a Cytoscape
-
27-10-2019 - |
Pregunta
Quiero usar NetworkX para generar un diseño para un gráfico. ¿Es posible transferir este diseño a cytoscape y dibujarlo allí? Intenté simplemente escribir un gráfico como
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')
Pero ninguno de estos se lee en Cytoscape. No estoy seguro de cómo transferir el gráfico en un formato que pueda incluir posiciones.
Solución
Su g.xml
El archivo GraphML se ve bien y se carga en Cytoscape para mí (estoy en una Mac). ¿Ha instalado el lector grafm ¿enchufar?
Si no, descárguelo y déjelo caer en su carpeta de complementos, luego reinicie Cytoscape e intente cargar el g.xml
Red de nuevo.
Actualizar Aquí hay algún código para agregar los gráficos. Es un poco detallado, y es posible que pueda omitir algunos de los atributos dependiendo de sus necesidades:
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')
Resultado: