将布局从networkx转移到cytoscape

时间:2011-04-29 04:51:46

标签: python networkx graph-layout gml cytoscape

我想使用networkx为图表生成布局。是否可以将此布局转移到cytoscape并将其绘制到那里?我试着简单地将图形写成

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')

但这些都不是在cytoscape中读取的。我不确定如何以包含位置的格式传输图表。

3 个答案:

答案 0 :(得分:12)

您的g.xml GraphML文件看起来不错,并且为我加载到Cytoscape中(我在Mac上)。你安装了graphmlreader插件了吗?

如果没有,请下载并将其放入插件文件夹,然后重新启动Cytoscape并尝试再次加载g.xml网络。

更新以下是一些代码,用于将图形外观和定位添加到networkx图表中。它有点冗长,您可以根据需要省略一些属性:

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')

结果:

enter image description here

答案 1 :(得分:0)

只需添加

nx.__version__
'2.3'
nx.set_node_attributes(G,  {n: {'x': p[0], 'y': p[1]}}, 'graphics')

参数位置错误...

答案 2 :(得分:0)

networkx现在具有向cytoscape JSON格式写入图/从中读取图的功能:https://networkx.github.io/documentation/stable/_modules/networkx/readwrite/json_graph/cytoscape.html