2011-04-29 2 views
7

networkx를 사용하여 그래프 레이아웃을 생성하고 싶습니다. 이 레이아웃을 cytoscape으로 전송하고 거기에 그릴 수 있습니까? 나는 단순히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에서 읽습니다. 위치를 포함 할 수있는 형식으로 그래프를 전송하는 방법을 모르겠습니다.

답변

9

귀하의 g.xml GraphML 파일이 좋아 보이며 나를 위해 Cytoscape에로드됩니다 (저는 Mac입니다). graphmlreader 플러그인을 설치 했습니까?

그렇지 않다면 다운로드하여 플러그인 폴더에 놓은 다음 Cytoscape를 다시 시작하고 g.xml 네트워크를 다시로드하십시오.

업데이트 다음은 네트워크 look-and-feel과 positioning을 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

+1

+1. 그래서 나는 cytoscape에서 graphml 파일을 읽을 수있었습니다. 이제 어떻게 graphml 파일의 노드 위치를 인코딩합니까? – highBandWidth

+0

멋지다 - 노드의 '그래픽'속성을 GML에 추가하는 예를 들어 보겠습니다.이 속성은보다 컴팩트 한 형식이므로 GraphML로 변환 할 수 있습니다. – samplebias

+1

그냥 고맙다고 말하고 싶다! 이 코드 조각은 내 그래프를 cytoscape로 가져 오는 데 조금 더 많은 것을 설명했습니다! 이제 대화 형 확률로 완전한 대사 맵을 생성하고 시각화 할 수 있습니다. – Jasper