2011-11-28 4 views
1

networkx로 그래프를 만드는 데 문제가 있습니다. 가장자리를 추가하려고하지만 코드가 작동하지 않습니다. 나는 http://networkx.lanl.gov/에서 튜토리얼에 의해 제안 된 길을 따랐다.networkx 함수를 사용하여 모서리 추가하기

내 코드에 도움이 되셨습니까? G. 노드()와 G.edges()는 아무 것도 출력하지 못했습니다. 다음과 같이

import networkx as nx 

fh = open("internal_link.txt", 'rb') 
G = nx.parse_edgelist(fh, delimiter='\t' and '\n', create_using=nx.DiGraph()) 
G.nodes() 
G.edges() 

내 데이터 (internal_link.txt) 형식은 다음과 같습니다, 당신은 NetworkX을 말하고있다 delimiter='\t' and '\n'을 사용하여

9991942 15683276 
9991942 15763818 
9991942 15764086 
9991942 15769010 
9991942 15771971 
9991942 15778227 
9991942 15784302 
9991942 15793787 
9991942 15811314 
9991942 15823044 
9991942 15843518 
9991942 15865514 
9991942 15874410 
9991942 15936166 
9991942 15959560 
9991942 16027570 
9991942 16043690 
9991942 16049723 
. 
. 
. 
. 

답변

2

(점은 이전의 것들과 정확히 같은 형태입니다 이상의 라인을 의미) 그 당신은 fh의 줄을 '\t' and '\n'의 결과로 나누고 싶습니다. 이것은 단지 '\n'입니다. '\n'이 줄을 분리하는 데 사용되므로 '\n'이없는 줄이 없으므로 한 줄에 하나의 토큰 만 있으므로 유효한 가장자리가 없습니다.

샘플 데이터에는 노드를 구분하는 공백이 표시됩니다. Stackoverflow는 실제로 탭을 잘 처리하지 않기 때문에 파일에 공백이 사용되는지 여부를 알 수는 없습니다. 구분 기호를 지정할 필요는 없지만 기본 공백을 사용하게하십시오.

귀하의 스크립트가됩니다 :

fh = open("internal_link.txt", 'rb') 
G = nx.parse_edgelist(fh, create_using=nx.DiGraph()) 

을하지만, 당신은뿐만 아니라 바로 사용할 수있는 간단한 read_edgelist :

G = nx.read_edgelist("internal_link.txt", create_using=nx.DiGraph()) 
나는 그것을하려고 할 때 유효한 그래프를 생산하는 (그리고 수행해야

당신이 보여준 데이터 파일의 일부).

G.nodes()도 아니고 G.edges()도 실제로 아무것도 인쇄하지 않습니다. 파이썬 인터프리터에서 대화식으로 작업하는 경우 결과가 표시되지만 스크립트에서보다 명확하게 지정해야합니다.

print G.nodes() 
print G.edges() 
+0

감사합니다. – ooozooo