NetworkXからCytoscapeにレイアウトを転送します
-
27-10-2019 - |
質問
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で読まれていません。位置を含む形式でグラフを転送する方法がわかりません。
解決
君の 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')
結果:
所属していません StackOverflow