冬休みはかっこいいネットワーク図が描けるnetworkxでネットワーク図を描いてみよう
みなさまはいい冬休みを過ごしていますか?わが社は28から5日までお休みをいただき本当にネズミに感謝している日々です。
でも技術者はこういった時こそマック難民をして自己の技術を研鑽させるべきだと思います。
今日はnetworkxというネットワーク図が描けるライブラリを紹介します。
- 今回のワークの所要時間:10分程度
- 用意するもの
- Python 3.x
- jupyterhub(pandasとmatplotlibをインストールしておいてください)
インストール
(venv)$pip install networkx
まずはデータをpandasでデータをロードします
import pandas as pd
df_links = pd.read_csv('https://microlearning.site/pydata/ch8/links.csv')
df_links.head(20)
以下のような表がロードされていることを確認してください。関係があるネットワーク同士は1になっています。
いよいよネットワーク図を描画
ネットワーク図の描画は以下です。
import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph()
NUM = len(df_links.index)
for i in range(1,NUM+1):
node_no = df_links.columns[i].strip("Node")#「Node」の文字を除去
G.add_node(str(node_no))
for i in range(NUM):
for j in range(NUM):
if df_links.iloc[i][j] == 1:
G.add_edge(str(i),str(j))
nx.draw_networkx(G,nide_color="k",edge_color="k",font_color="w")
plt.show()
何をしているかざっくりと説明させていただくと、まずノードを追加して
表のノード同士が1になっている部分(関係している部分)を線で結んでいます。
すると、以下のようなネットワーク図が表示されます(毎回表示は異なります)
各ノードと関係が濃い番号が中心に来ています。(4や5など)
お疲れさまでした。実行するたびに形が異なります。試してみてください。
更新履歴
- 2020/1/1 新規作成