将布局从networkx转移到cytoscap

2024-09-28 21:47:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用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')

但这两种都没有在细胞景观中看到。我不知道如何以包含位置的格式传输图形。


Tags: importnetworkxadd图形as图表绘制布局
2条回答

只是为了

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

参数位置错误。。。

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

如果没有,请下载它并将其放入plugins文件夹,然后重新启动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

相关问题 更多 >