Matplotlib를 사용한 NetworkX 그래프 그리기

4611 단어 snapythonnetworkgraph
NetworkX는 네트워크/그래프 분석을 위한 파이썬 라이브러리입니다. 실제 세계에서 네트워크 분석의 가장 좋은 예는 사람들 간의 관계를 설명하는 데 사용되는 SNA(소셜 네트워크 분석)입니다. Python은 numpy , pandas , scikit-learn 와 같이 Python을 위해 만들어진 패키지가 너무 많고 네트워크 분석과 같은 특정 분야의 경우 networkx 가 있기 때문에 Python은 과학 및 분석 목적으로 널리 사용됩니다. matplotlib 패키지를 사용하여 시작하고 생성된 그래프를 보는 방법을 알려드리겠습니다.

함께 코딩하기 위한 전제 조건



컴퓨터에 python을 설치했으며 pip를 사용하여 다음 패키지를 설치할 수 있습니다.

pip install --user networkx
pip install --user matplotlib


또는 pyenv를 사용하여 python을 설치하고 pipenv를 사용하여 패키지를 설치하는 것에 대한 이전 게시물을 따르는 경우 이 방법을 선호하기 때문에 다음 명령을 사용할 수 있습니다.

pipenv install networkx
pipenv install matplotlib


준비



간단한 데모 프로젝트를 위한 폴더 내에 두 개의 파일을 생성해 보겠습니다. 파일은 test.pymiserables.json 입니다. miserables.json 파일에는 here 에서 얻을 수 있는 그래프 데이터가 포함되어 있습니다.

- project
  |_ test.py
  |_ miserables.json


코딩



이제 코딩을 해보자 test.py

패키지 가져오기



JSON 파일을 다룰 것이기 때문에 networkx , matplotlib , 내장 패키지 json를 사용할 것입니다.

import json
import networkx as nx
import matplotlib.pyplot as plt


json 파일에서 데이터 로드


json 패키지를 사용하여 JSON 파일 콘텐츠를 로드하고 사전 개체로 변환합니다.

miserables_graph = None

with open('miserables.json') as json_file:
    miserables_graph = json.load(json_file)


networkx 그래프 만들기



그런 다음 networkx 그래프 개체 또는 인스턴스를 만들고 이전에 가져온 사전 개체에서 노드와 가장자리를 추가합니다.

G = nx.Graph()

G.add_nodes_from([(node['id'] for node in miserables_graph['nodes'])])

G.add_edges_from([(edge['source'], edge['target'])
                  for edge in miserables_graph['links']])


그래프 그리기



마지막으로 matplotlib 를 사용하여 그래프를 표시합니다.

nx.draw(G)
plt.show()

test.py를 사용하는 경우 python test.py 또는 pipenv run python test.py를 사용하여 pipenv 파일을 실행할 수 있습니다. 실행하면 바탕 화면에 프로그램 인스턴스가 생성됩니다.

그래프 그리기가 촌스럽고 못생겼다는 걸 알게 되실 거에요😆 나중에 예쁘게 꾸미는 방법을 찾아봐야겠지만 직접 찾아보는 재미도 쏠쏠합니다.

좋은 웹페이지 즐겨찾기