Tutorialに学ぶNetworkXの使い方④|Pythonによる可視化入門 #16

f:id:lib-arts:20191228172252p:plain

#1〜#4まではMatplotlibに関して、#5〜#8まではseabornについて、#9〜#12ではPillowについてまとめました。

Matplotlibの使い方①(plt.plot、plt.scatter、plt.hist)|Pythonによる可視化入門 #1 - lib-arts’s diary

Tutorialに学ぶseabornの使い方①(概要&Visualizing statistical relationships)|Pythonによる可視化入門 #5 - lib-arts’s diary

Tutorialに学ぶPillowの使い方①(Visualizing linear relationships)|Pythonによる可視化入門 #9 - lib-arts’s diary
#13からはPython環境でグラフ(グラフ理論のグラフで、ノードとエッジから構成されます)を描画するツールである、NetworkXについて取り扱います。

Tutorial — NetworkX 2.4 documentation

#15ではチュートリアルより、"Accessing edges and neighbors"、"Adding attributes to graphs, nodes, and edges"について取り扱いました。

Tutorialに学ぶNetworkXの使い方③|Pythonによる可視化入門 #15 - lib-arts’s diary

#16ではチュートリアルより、"Directed graphs"について取り扱います。
以下、目次になります。
1. Directed graphsについて
2. まとめ

 

1. Directed graphsについて
1節では"Directed graphs"について取り扱います。

f:id:lib-arts:20200107181911p:plain

Tutorial — NetworkX 2.4 documentation
冒頭部では、「DiGraphのクラスは有向のエッジを追加するプロパティを持つ」と記載されています。以下具体的に実装を元に確認していきます。

import networkx as nx
import matplotlib.pyplot as plt

DG = nx.DiGraph()
DG.add_weighted_edges_from([(1, 2, 0.5), (3, 1, 0.75)])

print(DG.out_degree(1, weight='weight'))
print(DG.degree(1, weight='weight'))
print(list(DG.successors(1)))
print(list(DG.neighbors(1)))

nx.draw(DG, with_labels=True)
plt.show(DG)

上記の動作結果は下記になります。

f:id:lib-arts:20200107182049p:plain

有向グラフに関する様々な属性情報を取得できたり、有向グラフが描画できていることが確認できます。また、この有向グラフを無向グラフに変更することもできます。下記を動作させてみます。

H = nx.Graph(DG)

nx.draw(H, with_labels=True)
plt.show(H)

f:id:lib-arts:20200107183004p:plain

nx.Graphの引数としてDGを与えることで有向グラフを無向グラフに変換できていることがわかります。


2. まとめ
#16ではチュートリアルより、"Directed graphs"以降の内容について取り扱います。
NetworkXのチュートリアルについては概ね簡単には確認できたので#16で一区切りにし、#17以降は言語処理の際に可視化として使われることのあるWordCloudについて取り扱っていきます。