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

しかし、これらはどちらもサイトスケープでは読み取られません。位置を含めることができる形式でグラフを転送する方法がわかりません。

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サイトスケープ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 に答える