파이썬에서 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
'Study > Computer' 카테고리의 다른 글
python에서 line 줄바꿈없이 업데이트하기 (0) | 2014.01.23 |
---|---|
python에서 list를 column형태로 출력하기. (0) | 2013.10.15 |
MS Word가 갑자기 비정상적으로 종료될 때 (0) | 2013.10.01 |
골치덩어리 unicode와 UTF-8 (1) | 2013.09.23 |
networkx에서 link의 방향성 (0) | 2013.09.19 |