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.

¿Fue útil?

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:

enter image description here

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top