2017-07-27 62 views
0

如何在Cytoscape.js中顯示networkx生成的網絡?如何在cytoscape.js中顯示networkx生成的網絡?

我已經嘗試過由networkx生成的JSON數據,看起來不起作用。所有的邊緣都消失了。 通過如下networkx產生JSON:

{ 
"directed":false, 
"graph":{ 

}, 
"nodes":[ 
    { 
     "id":"P40012" 
    }, 
    { 
     "id":"P53963" 
    }, 
    { 
     "id":"Q12265" 
    }, 
    { 
     "id":"P35728" 
    }, 
    { 
     "id":"P53270" 
    }, 
    { 
     "id":"P40559" 
    }, 
    { 
     "id":"P53066" 
    }, 
    { 
     "id":"P52960" 
    }, 
    { 
     "id":"P47125" 
    }, 
    { 
     "id":"Q04895" 
    }, 
    { 
     "id":"P54074" 
    }, 
    { 
     "id":"P21672" 
    }, 
    { 
     "id":"P53077" 
    }, 
    { 
     "id":"P36145" 
    }, 
    { 
     "id":"P31109" 
    }, 
    { 
     "id":"P35194" 
    }, 
    { 
     "id":"Q12447" 
    }, 
    { 
     "id":"P43580" 
    }, 
    { 
     "id":"Q04659" 
    }, 
    { 
     "id":"P53170" 
    }, 
    { 
     "id":"Q12377" 
    }, 
    { 
     "id":"Q3E742" 
    }, 
    { 
     "id":"Q05787" 
    }, 
    { 
     "id":"Q06263" 
    }, 
    { 
     "id":"P54862" 
    }, 
    { 
     "id":"P32802" 
    }, 
    { 
     "id":"Q12365" 
    }, 
    { 
     "id":"P38264" 
    }, 
    { 
     "id":"P32477" 
    }, 
    { 
     "id":"P20484" 
    }, 
    { 
     "id":"Q04344" 
    }, 
    { 
     "id":"Q03825" 
    }, 
    { 
     "id":"P06778" 
    }, 
    { 
     "id":"P17536" 
    }, 
    { 
     "id":"Q07355" 
    }, 
    { 
     "id":"Q06630" 
    }, 
    { 
     "id":"P29055" 
    }, 
    { 
     "id":"Q08208" 
    }, 
    { 
     "id":"Q08206" 
    }, 
    { 
     "id":"P25719" 
    }, 
    { 
     "id":"P38150" 
    }, 
    { 
     "id":"Q12504" 
    }, 
    { 
     "id":"P53550" 
    }, 
    { 
     "id":"P34077" 
    }, 
    { 
     "id":"Q04430" 
    }, 
    { 
     "id":"P31412" 
    }, 
    { 
     "id":"P38959" 
    }, 
    { 
     "id":"Q12157" 
    }, 
    { 
     "id":"P36016" 
    }, 
    { 
     "id":"P53397" 
    }, 
    { 
     "id":"P38322" 
    }, 
    { 
     "id":"P38323" 
    }, 
    { 
     "id":"P33895" 
    }, 
    { 
     "id":"Q05979" 
    }, 
    { 
     "id":"P47164" 
    }, 
    { 
     "id":"Q04502" 
    }, 
    { 
     "id":"Q12471" 
    }, 
    { 
     "id":"P25646" 
    }, 
    { 
     "id":"Q08683" 
    }, 
    { 
     "id":"Q03735" 
    }, 
    { 
     "id":"P25567" 
    }, 
    { 
     "id":"Q05518" 
    }, 
    { 
     "id":"Q07786" 
    }, 
    { 
     "id":"P29461" 
    }, 
    { 
     "id":"Q06338" 
    }, 
    { 
     "id":"P37267" 
    }, 
    { 
     "id":"P40961" 
    }, 
    { 
     "id":"P38331" 
    }, 
    { 
     "id":"P53206" 
    }, 
    { 
     "id":"P32048" 
    }, 
    { 
     "id":"P27614" 
    }, 
    { 
     "id":"Q07791" 
    }, 
    { 
     "id":"P10964" 
    }, 
    { 
     "id":"P21734" 
    }, 
    { 
     "id":"Q6B0W0" 
    }, 
    { 
     "id":"P36051" 
    }, 
    { 
     "id":"P0C0V8" 
    }, 
    { 
     "id":"Q03465" 
    }, 
    { 
     "id":"O14468" 
    }, 
    { 
     "id":"P38634" 
    }, 
    { 
     "id":"Q03788" 
    }, 
    { 
     "id":"Q12122" 
    }, 
    { 
     "id":"P46949" 
    }, 
    { 
     "id":"Q03782" 
    }, 
    { 
     "id":"P34247" 
    }, 
    { 
     "id":"P38358" 
    }, 
    { 
     "id":"Q04371" 
    }, 
    { 
     "id":"Q03778" 
    }, 
    { 
     "id":"P53113" 
    }, 
    { 
     "id":"Q08922" 
    }, 
    { 
     "id":"Q12115" 
    }, 
    { 
     "id":"P35732" 
    }, 
    { 
     "id":"P40317" 
    }, 
    { 
     "id":"P46970" 
    }, 
    { 
     "id":"P38994" 
    }, 
    { 
     "id":"Q12297" 
    }, 
    { 
     "id":"P23624" 
    }, 
    { 
     "id":"P26364" 
    }, 
    { 
     "id":"P0CX10" 
    }, 
    { 
     "id":"P15646" 
    } 
], 
"links":[ 
    { 
     "source":11, 
     "target":48 
    }, 
    { 
     "source":11, 
     "target":36 
    }, 
    { 
     "source":15, 
     "target":99 
    }, 
    { 
     "source":18, 
     "target":46 
    }, 
    { 
     "source":20, 
     "target":51 
    }, 
    { 
     "source":20, 
     "target":77 
    }, 
    { 
     "source":24, 
     "target":27 
    }, 
    { 
     "source":25, 
     "target":85 
    }, 
    { 
     "source":27, 
     "target":75 
    }, 
    { 
     "source":27, 
     "target":85 
    }, 
    { 
     "source":29, 
     "target":99 
    }, 
    { 
     "source":29, 
     "target":37 
    }, 
    { 
     "source":33, 
     "target":60 
    }, 
    { 
     "source":35, 
     "target":60 
    }, 
    { 
     "source":37, 
     "target":63 
    }, 
    { 
     "source":42, 
     "target":91 
    }, 
    { 
     "source":47, 
     "target":58 
    }, 
    { 
     "source":48, 
     "target":54 
    }, 
    { 
     "source":52, 
     "target":83 
    }, 
    { 
     "source":57, 
     "target":91 
    }, 
    { 
     "source":60, 
     "target":91 
    }, 
    { 
     "source":60, 
     "target":99 
    }, 
    { 
     "source":72, 
     "target":99 
    } 
], 
"multigraph":false 
} 

是否有任何其他的方式來顯示Cytoscape.js由networkx中產生的網絡?我知道networkx可以輸出爲GEXF,GML,JSON。那麼我如何在Cytoscape.js中顯示它?

+0

它看起來像我的邊緣在那裏。 「鏈接」中有很多數據。那不是邊緣? – Joel

+0

它看起來像這樣:http://imgur.com/gallery/yKvlu只是一個由節點組成的圓,但沒有邊。 – hcnak

回答

0

Library to import gml


邊(不是鏈接),需要的ID Cytoscape中。通常它應該看起來像這樣。

{ 
    data: { 
    id: 'something', 
    source: 'source id' 
    target: 'target id' 
    } 
} 

這應該是相當簡單的從networkx輸入解析。

documentation for cytoscape's format

+0

你說得對,我已經通過添加一個轉換函數來解決這個問題,它將networkx數據轉換爲Cytoscape.js接受的JSON格式。謝謝。 – hcnak

1

我已經解決了這個問題,由networkx節點和邊緣手動轉換到由Cytoscape.js接受JSON格式。

代碼是如下:

# this function is used to convert networkx to Cytoscape.js JSON format 
# returns string of JSON 
def convert2cytoscapeJSON(G): 
    # load all nodes into nodes array 
    final = {} 
    final["nodes"] = [] 
    final["edges"] = [] 
    for node in G.nodes(): 
     nx = {} 
     nx["data"] = {} 
     nx["data"]["id"] = node 
     nx["data"]["label"] = node 
     final["nodes"].append(nx.copy()) 
    #load all edges to edges array 
    for edge in G.edges(): 
     nx = {} 
     nx["data"]={} 
     nx["data"]["id"]=edge[0]+edge[1] 
     nx["data"]["source"]=edge[0] 
     nx["data"]["target"]=edge[1] 
     final["edges"].append(nx) 
    return json.dumps(final) 

給定一個networkx圖G,該功能將直接返回JSON字符串。

相關問題