파이썬에서 networkx 패키지를 쓰다보면 그래프를 파일로 출력해야 할 때가 많습니다. 예전에는 pajek파일 형식(.net)으로 뽑았는데요. 이 형식에는 꽤 제약이 많은 것 같습니다. 무엇보다도 node의 id를 새로 정의해서 edgelist에 사용하기 때문에 상당히 헷갈리기 쉽지요.


그래서 저는 gexf 형식을 즐겨씁니다. 이 형식은 그래프를 위한 xml이라고 하는데요. 파일 용량이 조금 커지긴 하지만 그냥 에디터에서 읽어도, gephi에서 읽어도 모두 직관적으로 사용할 수 있습니다.


그러나 문제가 있는데 G[1]['class'] = "A" 등과 같이 attribute를 정해준 뒤에 gexf로 출력하라고 하면 다음과 같은 문제가 생깁니다. 


AttributeError: 'str' object has no attribute 'copy' 

에러의 발생위치는 write_gexf 함수.... -.-!!!!!


이를 해결하는 방법은 구글링하면 나오는데 생각보다 쉽습니다. Attribute를 정해줄 때 다음과 같이 해야합니다. 

(x) G[1]['class'] = "A"

(o) G.node[1]['class'] = "A"


두번째 방법으로 G.node를 직접 써주어야 합니다.


출처: https://groups.google.com/forum/#!msg/networkx-discuss/Irx4j6G-srs/yR8GFtMmQB8J

+ Recent posts