17

我想使用 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 中读取。我不确定如何以可以包含位置的格式传输图表。

4

3 回答 3

17

您的g.xmlGraphML 文件看起来不错,并为我加载到 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')

结果:

在此处输入图像描述

于 2011-04-29T05:28:13.897 回答
4

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

于 2020-09-18T21:07:33.647 回答
0

只是一个补充

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

参数位置不对...

于 2019-12-16T15:02:25.630 回答