REP - networkx - 019, JULY 2010 2 어 있고 Windows 계열도 지원하지만, Winodws OS의 경우 많은 버그를 가지고 있기 때문에 현재 Windows 운영 체제와 정상적으로 호환되는 패키지는 NetworkX 이다. 각 패키지의 종류와 각

Similar documents
REP - NETWORKX - 019, JULY NetworkX 를이용한 Python 그래프가시화 Graph Visualization from Python Using NetworkX 김선영 Kim SeonYeong 부산대학교컴퓨터공학과

Microsoft PowerPoint - chap01-C언어개요.pptx

SIGIL 완벽입문

Chap 6: Graphs

184최종

07Á¤Ã¥¸®Æ÷Æ®-pdf¿ë

200707Á¤Ã¥¸®Æ÷Æ®_³»Áö

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

Artificial Intelligence: Assignment 6 Seung-Hoon Na December 15, Sarsa와 Q-learning Windy Gridworld Windy Gridworld의 원문은 다음 Sutton 교재의 연습문제


04 Çмú_±â¼ú±â»ç

Chap 6: Graphs

놀이동산미아찾기시스템

Chap 6: Graphs

Windows 10 General Announcement v1.0-KO

데이터 시각화

와플-4년-2호-본문-15.ps

ºñ»óÀå±â¾÷ ¿ì¸®»çÁÖÁ¦µµ °³¼±¹æ¾È.hwp

Windows 8에서 BioStar 1 설치하기

PDF_Compass_32호-v3.pdf

Artificial Intelligence: Assignment 2 Seung-Hoon Na October 20, Map coloring 본 과제에서는 M N Grid world 지도상에서 각 region이 rectangle또는 polyomino유형으로 주

Spring Boot

ÃѼŁ1-ÃÖÁ¾Ãâ·Â¿ë2

마지막 변경일 2018년 5월 7일 ** 이항분포와 정규분포의 관계 ** Geogebra와 수학의 시각화 책의 3.2소절 내용임. 가장 최근 파일은 링크를 누르면 받아 보실 수 있습니다.

PowerPoint 프레젠테이션

<C6F7C6AEB6F5B1B3C0E72E687770>

¾Æ½Ã¾ÆÀú³Î8È£-ÅëÇÕ

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

PowerPoint 프레젠테이션

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

2002년 2학기 자료구조

04_오픈지엘API.key

Microsoft PowerPoint - ch12 - Graph, Graph Algorithms

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

Deok9_Exploit Technique

슬라이드 1

REP - CP - 016, N OVEMBER 사진 요약 25 가지 색상 Surf 를 이용한 사진 요약과 사진 배치 알고리즘 Photo Summarization - Representative Photo Selection based on 25 Color Hi

Spring Boot/JDBC JdbcTemplate/CRUD 예제

DBMS & SQL Server Installation Database Laboratory

WISHBONE System-on-Chip Interconnection Architecture for Portable IP Cores

Data structure: Assignment 1 Seung-Hoon Na October 1, Assignment 1 Binary search 주어진 정렬된 입력 파일이 있다고 가정하자. 단, 파일내의 숫자는 공백으로 구 분, file내에 숫자들은

[로플랫]표준상품소개서_(1.042)

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Python과 함께 배우는 신호 해석 제 5 강. 복소수 연산 및 Python을 이용한 복소수 연산 (제 2 장. 복소수 기초)

<3231C3A4C8F1C5C22E687770>

Open Cloud Engine Open Source Big Data Platform Flamingo Project Open Cloud Engine Flamingo Project Leader 김병곤

Contributors: Myung Su Seok and SeokJae Yoo Last Update: 09/25/ Introduction 2015년 8월현재전자기학분야에서가장많이쓰이고있는 simulation software는다음과같은알고리즘을사용하고있다.

Secure Programming Lecture1 : Introduction

77

[Brochure] KOR_TunA

쉽게 배우는 알고리즘 강의노트

온라인등록용 메뉴얼

서 형성되는 관계에 대한 연구 [4]가 이루어지고 있다. 실제 사회에서 하나의 집단을 가지고 할 수 있는 분석 방식이 다양하듯 인터넷에서 다양한 방면의 분석이 이루어지는 것을 확인할 수 있다. 본 보고서에서는 인터넷 커뮤니티에서 사용자들이 어떠한 관계를 나타내는지에 대

CATIA-Assembly Design

1809_2018-BESPINGLOBAL_Design Guidelines_out

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

5...hwp

PowerPoint Presentation

Microsoft 을 열면 깔끔한 사용자 중심의 메뉴 및 레이아웃이 제일 먼저 눈에 띕니다. 또한 은 스마트폰, 테블릿 및 클라우드는 물론 가 설치되어 있지 않은 PC 에서도 사용할 수 있습니다. 따라서 장소와 디바이스에 관계 없이 언제, 어디서나 문서를 확인하고 편집

RHEV 2.2 인증서 만료 확인 및 갱신

2013unihangulchar {45380} 2unihangulchar {54617}unihangulchar {44592} unihangulchar {49328}unihangulchar {50629}unihangulchar {51312}unihangulchar {51

00-10.hwp

PowerPoint 프레젠테이션

sna-node-ties


Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

제8장 자바 GUI 프로그래밍 II

2009방송통신산업동향.hwp

연구노트

<33312D312D313220C0CCC7D1C1F820BFB0C3A2BCB12E687770>

1. 도구개요 CppUnit Testing 소개 CppUnit 는 C++ 용 testing Framework 로 Java 의 JUnit 을 C++ 로구현 C++ 언어에서사용할수있도록개발된 Open Source 프로젝트로, source code 의특정 Module 이의도

Python으로 쿠키런 운영하기_ver최종.key


win8_1±³

Solaris Express Developer Edition

위해 사용된 기법에 대해 소개하고자 한다. 시각화와 자료구조를 동시에 활용하는 프로그램이 가지는 한계와 이를 극복하기 위한 시도들을 살펴봄으로서 소셜네트워크의 분석을 위한 접근 방안을 고찰해 보고자 한다. 2장에서는 실험에 사용된 인터넷 커뮤니티인 MLBPark 게시판

<B3EDB9AEC0DBBCBAB9FD2E687770>


Slide 1

Xcrypt 내장형 X211SCI 수신기 KBS World 채널 설정법

PowerPoint Presentation

sk....pdf..

!K_InDesginCS_NFH

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

161호_내지(2도)

DBPIA-NURIMEDIA

소개 Mac OS X (10.9, 10.10, 10.11, 10.12) 와 OKI 프린터호환성 Mac OS X 를사용하는 PC 에 OKI 프린터및복합기 (MFP) 제품을연결하여사용할때, 최고의성능을발휘할수있도록하는것이 OKI 의목 표입니다. 아래의문서는 OKI 프린터및

A12 작품설명서.hwp

Microsoft PowerPoint - Windows CE Programming_2008 [호환 모드]

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

Google Maps Android API v2

ODS-FM1

<5B DB1B3C0B0C0DAB8A65FC0A7C7D15FB5F0C0DAC0CEBBE7B0ED5FC5F8C5B62E706466>

1

Microsoft PowerPoint - lecture2-opengl.ppt [호환 모드]

SBR-100S User Manual

Transcription:

REP - networkx - 019, JULY 2010 1 NetworkX를 이용한 Python 그래프 가시화 Graph Visualization from Python Using NetworkX 부산대학교 컴퓨터공학과 김선영 E-mail : s.y.kim@pusan.ac.kr Revised on 2010.07.27 ABSTRACT Python은 사용하기 쉬운 오픈 소스 프로그래밍 언어로, 그 사용자가 늘어나고 있는 추세이다. 그러나 아직까지 자료 구조용 그래프를 설계해서 시각화하기 위한 도구들이 부족한 실정으로, Windows OS 기반에서 Python으로 그래프를 그릴 수 있는 무료 라이브러리와 모듈에 대한 조사 가 필요하다. 현재 그래프 가시화 소프트웨어로 많이 알려진 Graphviz를 Python에서 내장하여 사용하려는 라이브러리들과 모듈들은 Windows OS 기반에서 제대로 동작하지 않으므로 사용 할 수 없다. 이로 인해 Windows 사용자들은 Graphviz 내장이 필수가 아닌 Python Package인 NetworkX를 가장 일반적으로 사용하고 있다. 따라서 본 보고서에서는 현재 Windows 운영체제와 호환되는 Python Package인 NetworkX의 설치 방법과 그 사용 예제에 대해서 알아본다. Keywords Python Graph Drawing Tool, NetworkX 1 서 론 Python은 사용하기 쉬운 오픈 소스 프로그래밍 언어로[1], 프로토타입 작성이 쉽고 교육용으로 적합한 언어이다. 그러나 아직까지 Python으로 자료 구조를 학습하기 위한 그래프 설계 및 시각화 도구들 은 충분하지 못하므로, Windows OS 기반에서 Python으로 그래프를 그릴 수 있는 무료 라이브러리 와 모듈에 대한 조사가 필요하다. 현재 그래프 가시화 소프트웨어로 많이 알려진 Graphviz를 Python 에서 내장하여 사용하려는 라이브러리들과 모듈들은 Windows OS 기반에서 제대로 동작하지 않으므 로 사용할 수 없다. 이로 인해 Windows 사용자들은 Graphviz 내장이 필수가 아닌 Python Package 인 NetworkX를 가장 일반적으로 사용하고 있다. 따라서 본 보고서에서는 현재 Windows 운영체제와 호환되는 Python Package인 NetworkX의 설치 방법과 그 사용 예제에 대해서 알아보고자 한다 2 관련 연구 Python으로 그래프를 그리기 위해서 여러가지 무료 도구들을 사용할 수 있다. 대표적인 패키지들이 PyGraphviz, Pydot, igraph, NetworkX 등이다. 그러나 이들 대부분은 Linux와 OSX 계열에 호환되

REP - networkx - 019, JULY 2010 2 어 있고 Windows 계열도 지원하지만, Winodws OS의 경우 많은 버그를 가지고 있기 때문에 현재 Windows 운영 체제와 정상적으로 호환되는 패키지는 NetworkX 이다. 각 패키지의 종류와 각각에 대 한 자세한 내용은 다음과 같다. 1. PyGraphviz : http://networkz.lanl.gov/pygraphviz/ PyGraphviz는 Graphviz 그래프 레이아웃의 Python용 인터페이스로, PyGraphviz로 Graphviz 그래프 자료구조와 레이아웃 알고리즘에 Python으로 접근하여 그래프를 생성하고 편집할 수 있 다[2]. PyGraphviz를 사용할 수 있는 플랫폼은 Winodows, OSX, Linux이고, Windows 플랫폼에 서 안정화된 버전은 0.99.1 버전인데, Windows에서 정상적으로 동작하지 않는다. 2. Pydot : http://code.google.com/p/pydot/ Pydot은 Graphviz Dot 언어의 Python용 인터페이스이다. Pydot은 Python으로 방향을 가지는 그래프와 방향 없는 그래프 모두 쉽게 생성이 가능하며, Dot 언어의 모든 속성을 지원한다[3]. Pydot은 Windows, OSX, Linux와 호환된다고 명시하고 있다. 그러나 현재의 Pydot 1.0.2 버전은 그래프를 생성하는 주요 함수들에 버그가 많고, 공식적인 업그레이드가 이루어지지 않고 있으며, 비공식 패치로는 여러 side-effect가 수반되고 있어 Windows 운영체제에서는 사용하기가 어렵다. 3. igraph : http://igraph.sourceforge.net/screenshots.html igraph는 Pydot과 마찬가지로 방향을 가지는 그래프와 방향이 없는 그래프를 생성하기 위한 무 료 소프트웨어 패키지이다. igraph는 minumum spanning trees와 같은 전형적인 그리프 이론도 포함하고, 커뮤니티 구조 검색과 같은 몇 가지 최신 네트워크 분석 방법을 구현하는 알고리즘도 포함하고 있다[4]. 그림 1 은 igraph를 이용했을 때 생성할 수 있는 다양한 그래프 레이아웃의 모습이다. 호환되는 운영체제로는 Windows, OSX, Linux가 있으며 Python외에도 R package, Ruby, C 라이브러리 등 여러 언어를 지원한다. igraph는 그래프 알고리즘만을 제공하므로 그래 프를 시각화하여 보기 위해서는 Cairo 라이브러리와 Python을 연동하는 pycairo 라이브러리가 필요하다. 그러나 시스템이 Cairo DLL들을 찾지 못하기 때문에, Windows에서 pycairo 라이브 러리를 사용하려면 추가적인 개발 도구세트가 필요하다. 지금까지는 Visual Studio 2003 버전을 사용해서 개발을 할 경우, 구 pycairo 버전을 설치하면 잘 동작한다는 것만 알려져 있다. 추후 pycairo 버전이 개선되어 시스템이 Cairo DLL들을 잘 찾도록 업데이트 된다면 NetowrkX 보다 더 다양한 그래프 레이아웃을 제공할 수 있으므로 igraph를 사용하는 것이 Python으로 그래프를 시각화하기에 가장 적합하다고 할 수 있을 것이다. 4. NetworkX : http://networkx.lanl.gov/gallery.html NetworkX는 복잡한 네트워크의 기능과 구조 연구, 계산, 생성에 관한 Python기반 Package이 다[5]. 그림 2 는 NetworkX를 이용한 다양한 그래프 레이아웃의 모습이다. NetworkX는 Linux, OSX, Windows 운영 체제와 호환되며 무료 소프트웨어로써 사용하기 쉽기 때문에, Python으

REP - networkx - 019, JULY 2010 3 (a) Fruchterman-Reingold Force based Layout (b) Kautz Graph with Adjacency Matrix (c) Erdős-Rényi Random Graph (d) Dendrogram (e) Fruchterman-Reingold Graph (f) Kamada-Kawai Algorithm 그림 1. igraph를 이용한 여러가지 그래프 레이아웃. NetworkX에 R package를 내장하 면 (d) Dendrogram, (e)fruchterman-reingold Graph 등 보다 더 다양한 그래프 레이 아웃을 사용할 수 있다. 로 그래프 알고리즘을 사용하는 사용자들에게 많이 알려져 있다. igraph와 같이 visualization 부 분을 포함하고 있지 않기 때문에 matplotlib 라이브러리를 사용하여 viewing 기능을 제공한다. pygraphviz를 내장하여 그래프 레이아웃을 Graphviz와 같이 다양한 옵션을 통해 제공하고자 하 였으나, 앞서 소개하였던 이유와 마찬가지로 pygraphviz를 사용할 수 없기 때문에 그래프 레이아 웃에 있어서는 제한적이다. 그러나 정상적으로 잘 동작하고 버그도 지속적으로 수정되는 등 업데 이트가 잘 이루어지므로 현재 Python으로 그래프를 그리기에는 가장 적합한 패키지가 NetworkX 라고 할 수 있다. 3 NetworkX의 기능 소개 및 사용 예 3.1 NetworkX의 특징 NetworkX는 복잡한 네트워크의 기능, 구조와 역학의 생성, 계산과 연구를 위한 Python package로, 주요 특징은 다음과 같다.

REP - networkx - 019, JULY 2010 4 (a) 이항확률그래프에서의 컴포넌트 연결 출현 일러스트레이트 (b) Circular Tree (c) Random Geometric Graph (d) Atlas of all graphs of 6 nodes or less (e) Grid (f) miles graph 그림 2. NetworkX를 이용한 다양한 그래프 레이아웃 1. 표준 그래프이론과 통계물리학 기능 2. applications, disciplines, platforms 사이에서 네트워크 알고리즘의 쉬운 변경 3. 많은 전형적인 그래프와 합성 네트워크 지원 4. 시계열, 텍스트, 이미지나 XML 레코드와 같은 형태로 Nodes와 Edges가 변할 수 있음 5. C, C++, Fortran 등의 고품질 소프트웨어의 기존 코드를 잘 활용함 6. Open source임 3.2 NetworkX의 설치 Networkx는 Python 2.4, 2.5, 2.6버전과 호환되고 Windows 운영 체제에서의 설치 방법은 다음과 같다. 1. Python 2.6 버전을 설치한다. Python 2.4, 2.5 버전도 NetworkX에서 잘 동작하나 이후 그래프 알고리즘을 시각화하는 모듈이 이 버전을 지원하지 않는다. 적합하지 않은 버전을 설치하면 예

REP - networkx - 019, JULY 2010 5 제가 실행되지 않는다. 2. NetworkX 파일을 받아 설치한다. 콘솔 창에서 Python networkx install 를 입력하여 완료할 수 있다. easy_install을 먼저 설치했을 경우, 콘솔 창에서 networkx install 을 입력함으로써 간단하게 설치할 수도 있다. 3. Networkx는 그래프 알고리즘을 조작하고 생성하는 도구로, 이 자체로는 그래프를 가시화하여 확인할 수 없다. 따라서 시각화 패키지인 Matplotlib를 추가로 설치하여 그래프를 볼 수 있도록 한다. Matplotlib는 몇 가지 라이브러리들을 필요로하므로 이를 함께 설치한다. (a) Numpy 라이브러리 설치 (b) Matplotlib 라이브러리 설치 (c) pytz 설치 (d) Agg 설치 (e) dateutil 설치 4. 지금까지 설치한 NetworkX 패키지가 잘 설치되었는지 확인하기 위해서 Testing 프로그램인 nose 를 설치한다. 그리고 Python IDLE에서 import networkx; networkx.test() 코드를 수행함으로써 설치를 마무리한다. 3.3 NetworkX의 사용 예제 NetworkX를 이용한 간단한 그래프 예제를 세 가지 살펴본다. 먼저 단순한 node와 edge를 생성하는 코드는 그림 3과 같다. 그림 3. Node 6개와 Edge 6개로 구성한 간단한 그래프

REP - networkx - 019, JULY 2010 6 1. add_edge : NetworkX는 여러가지 함수를 통해 node와 edge를 생성할 수 있는데, 가장 많이 사 용하는 함수가 add_edge 함수이다. 이를 통해 edge를 생성하고 node를 간접적으로 생성할 수 있다. 2. draw_network_labels : node에 레이블을 단다. 3. draw_network_edge_lables : edge에 레이블을 다는 함수이다. 4. draw_networkx_nodes : 그래프에 node를 추가하는 함수로, node의 타입이나 색상 등의 속성을 지정할 수 있다. 5. draw_netwrkx_edges : 그래프에 edge를 추가하는 함수로, edge의 타입이나 색상 등의 속성을 지정할 수 있다. 그림 3 의 실행 결과는 다음 그림 4 과 같다. node의 색상은 붉은색이고 각각 레이블이 달려 있으며, edge는 실선, 점선, dotted로 나누어지고 그 두께 또한 지정한 바와 같이 나타났음을 확인할 수 있다. 그림 4. 그림 3 의 실행 결과. Node 6개와 Edge 6개가 생성된 것을 확인할 수 있다. 그림 4은 node와 edge의 위치가 정해져있는 레이아웃을 사용하지 않기 때문에 몇 가지 레이아웃을 사용하여 그래프 형태를 바꿀 수 있다. NetworkX에서 기본적으로 제공하는 그래프 레이아웃의 종류는 5가지로, shell, random, circular, spectral, spring 레이아웃이 그것들이다. 그림 4 의 그래프는 shell layout을 적용한 그래프이다. 그 외의 기본 레이아웃을 적용한 그래프는 그림 5와 같다. NetworkX에서 제공하는 기본 그래프 레이아웃 외에 R package등을 설치하여 Fruchterman-Reingold Layout 등의 더 많은 그래프 레이아웃을 사용할 수도 있다. 예제1 에서는 node의 위치를 사용자가 일일이 지정하지 않아도 레이아웃을 통해 적절히 배치되었 다. 예제 2에서는 각 node의 위치를 사용자가 지정할 수 있다. 자세한 코드는 아래 그림 6과 같다.

REP - networkx - 019, JULY 2010 7 (a) Random Layout (b) Spring Layout (c) Spectral Layout (d) Circular Layout 그림 5. NetworkX에서 기본적으로 제공하는 레이아웃을 적용한 그래프. Shell Layout 을 적용한 그래프는 그림 4와 같다. 다음 그림 7 은 그림 6 를 실행한 결과이다. 각 node가 지정한 좌표 값대로 배열되었음을 확인할 수 있다. 마지막으로 방향성 그래프 예제에 대해서 살펴보겠다. NetworkX 에서는 화살표가 꺽은 모양이 아니라 굵은 선으로 표시한다. 그래고 방향성 그래프를 그리기 위해서는 지금까지의 예제처럼 Graph 를 만드는 것이 아니라 DiGraph를 생성하여 방향성 그래프를 그리기 위한 초석을 만들어두어야 한다. DiGraph로 그래프 형태를 지정하였다 하더라도 추후 to undirected 함수를 통해 방향이 없는 그래프를 생성할 수도 있다. 1. add path : Graph에서는 add edge 였으나, DiGraph에서 방향성 있는 edge를 생성하기 위해서는 이 함수를 사용해야 한다. 첫 번째 인자에서 두 번째 인자 방향으로 화살표가 생성된다. 그림 9 은 그림 8 을 실행한 결과이다. 각 node를 잇는 edge 중 파란색 굵은 선이 화살표를 나타 낸다. 2와 4 node의 경우 2에서 4 방향으로 화살표가 생성되어, 제수가 나눌 수 있는 피제수를 바르게 선택했음을 확인할 수 있다. NetworkX로 그래프를 그리고자 할 때 node와 edge를 식별할 수 있는 범위가 어떻게 되는지 확인 해보기 위해서 그림 8의 노드를 10, 30, 50, 100, 500, 1000개로 늘려 그래프를 생성하였다. 결과는 그림

REP - networkx - 019, JULY 2010 8 그림 6. node 위치 지정해서 그리기 그림 7. 그림 6 를 실행한 결과. house graph로 node가 지정한 위치에 배치되었음을 확인할 수 있다. 10 과 같다. 그림 10를 통해 node가 100개를 초과하면 사실상 그래프를 식별하기가 불가능하다고 볼 수 있다. 따라서 NetowkrX로 그래프를 생성할 때 사용가능한 node의 수는 50개를 초과하지 않는 것이 바람직 하다고 여겨진다. 4 결론 본 보고서에서는 Python으로 자료 구조 그래프를 그리는 무료 패키지, 라이브러리와 모듈에 대해서 조사하고 그 중 현재 사용하기 가장 적합한 NetworkX에 대해서 그 기능과 설치 방법, 예제를 살펴 보았다. 여러가지 라이브러리와 패키지가 존재하나 Windows 운영체제와 호환 가능한 라이브러리는

REP - networkx - 019, JULY 2010 9 그림 8. 1부터 10까지의 숫자 중, 피제수가 제수로 나누어 질 경우 제수에서 피제수 방향으로 화살표를 생성한다. 그림 9. 그림 8 를 실행한 결과. 제수가 나눌 수 있는 피제수 방향으로 파란색 굵은 선, 즉 화살표가 생성된 것을 확인할 수 있다. NetworkX 였다. Windows에서 사용할 수 있는 다른 그래프 그리기 패키지로는 igraph가 있는데, 현 재로써 igraph는 그래프 분석과 생성을 할 수 있으나 이를 시각화하는 모듈인 pycairo의 버그로 인해 그래프를 가시화 할 수 없다는 문제점이 있었다. Graphviz를 사용하는 pygraphviz, pydot 등은 자체의 버그로 인해 사용이 불가능하였다. 따라서 Python으로 그래프를 그려 가시화하기 위한 패키지로는 NetworkX가 가장 적합하다고 할 수 있다. NetworkX는 표준 그래프 이론과 통계 물리학 기능, 많은 전형적인 그래프와 합성 네트워크를 지원하므로 그래프를 그리기에도 알맞고, tutorial과 reference가

REP - networkx - 019, JULY 2010 10 (a) node 10개 (b) node 30개 (c) node 50개 (d) node 100개 (e) node 500개 (f) 1000개 그림 10. node 수에 따른 그래프 9의 모습. node가 30개일 때는 node와 edge label을 모두 식별할 수 있으나, 50개 이상의 node를 가지는 그래프는 정확한 식별이 어렵다. node가 100개를 초과하면 사실상 그래프를 인지하는 것은 불가능하다고 볼 수 있다. 잘 정리되어 있어 NetworkX로 그래프를 그려보지 않은 사용자도 쉽게 배울 수 있도록 지원하고 있다. 다만, 한 그래프의 노드 수가 100개 이상일 경우, 사실상 그래프를 육안으로 식별하기가 불가능하므로 많은 수의 노드를 사용하기에는 부적합하다고 여겨진다. 따라서 노드 수가 50개 이하인 간단한 그래프 를 그리기 위한 목적으로만 사용하는 것이 바람직하다. 참고 문헌 1. Mark Lutz, Programming Python, vol. 1, O REILLY, 1005 Gravenstein Highway North, Sebastopol, CA 95472, 2006. 2. pygraphviz, Pygraphviz, http://networkx.lanl.gov/pygraphviz/. 3. Pydot, Pydot, http://code.google.com/p/pydot/. 4. igraph, igraph, http://igraph.sourceforge.net/. 5. NetworkX, Networkx, http://networkx.lanl.gov/. 6. igraph, igraph gallery, http://igraph.sourceforge.net/screenshots.html. 7. NetworkX, Networkx gallery, http://networkx.lanl.gov/gallery.html.