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