【Python】NetworkXライブラリの基礎的な使い方とグラフの可視化





プログラミング学習を行なっていく中で、

 

「Pythonでどういったモノが作れるのか分からない、、」

「自分がどのくらい成長しているのか分からない、、」

 

といった悩みにぶち当たったことがあるのではないでしょうか?

 

そういった原因にあるのは、学習した内容をアウトプットしていないのが挙げられます。

 

プログラミングでは初めに基礎の学習から入りますが、インプットするばかりに自分が学習した成果を全く作成していないので、「プログラミングは自分には向いてない、、」などの妄想に陥り挫折してしまう方が沢山いるのです。

 

今回はそういった原因を解決するためにも、PythonのライブラリNetworkxを使ってグラフを作成していこうと思います。


汎用性の広いPythonを0から習得するためのフロー及び実際にPythonで開発を行い開発案件を獲得するまでの筋道について解説しているチュートリアル資料と

コーディングの参考となる実際にPythonを使って作ったツールのソースコードを無料で配布していますので、こちらも併せてご覧ください。

初心者・入門者でも30日間で学習できるおすすめPython学習方法

 


おすすめのプログラミングスクールの比較・特徴をまとめた記事を執筆しております。

挫折することなく一直線にエンジニアを短期集中で目指している人はこちらから確認してください。

【比較表・無料体験あり】おすすめのプログラミングスクール3選!オンライン学習で完結!

 

NetworkXとは

Networkxとはグラフやネットワークに用いられるPythonのライブラリになります。

 

Matplotlib、PyGraphvizを使うことでグラフの可視化することも出来ます。

 

グラフとは

そもそもグラフとはどう作成されているのかについて、ざっくりと解説していきます。

 

グラフとは数値を絵でイメージ化することを指します。

 

プレゼンなどでよく用いられますが、比較する対象がある場合、数字よりも絵として表現した方が視覚的に分かりやすいです。

 

プログラミング学習ではこういった数字ばかりを使うため、モチベーションを保つことが難しいですが、こういったグラフなど作成することによって「自分がここまでできるようになった!」とパッと見れるので成長している自分が可視化されて学習意欲が高まります。

ネットワークとは

ネットワークとは「網の目(ネット)状に張り巡らされたもの」を指します。

 

よくインターネットなどのデジタル世界で使われることが多いですが、アナログ世界でも人と人との繋がり、人脈もネットワークと表すことが出来ます。

 

基本的にはデジタル世界で使われることが大半なので、IT用語に詳しくない方はよく分からない状態で使われています。

 

近年ではIoTや人と物を繋げたりすることが可能になった時代では、この用語はしっかりと区別して使い分けできるようにしましょう。

 

ネットワークの構築方法

ネットワークとは頂点(vertex,node)辺(edge,arc)から構築されます。

また、ネットワークという概念は頂点と頂点を結ぶ辺の上にモノが流れるので、重さというのも考慮されてきます。

 

重さを考慮した頂点と辺で成り立つ、網目状に張り巡らせたモノを僕らはインターネットと呼んでいます。

 

NetworkXのインストール手順

早速、NetworkXをインストールしていきます。

 

pip install networkx

 

古いバージョンをインストール済みの方は上記のコマンドを入力することで更新することが出来ます。

 

pip install -U networkx

 

インストール出来ているか、確認を行います。

 

$ python3
>>> import networkx
>>>

 

上記のように、インタラクティブシェルが表示されればインストールが完了です。

コードの記述

インストールが完了したので、コードの記述を行います。

 

全体のコードはこちらになります。

import matplotlib.pyplot as plt
import networkx as nw

G = nw.Graph()
nw.add_path(G, [5, 1, 4, 3, 0, 7, 2, 8, 9, 6])
nw.add_path(G, [3, 0, 6, 4, 2, 7, 1, 9, 8, 5])

nw.draw_networkx(G)
plt.show()

 

今回は初心者の方でも分かりやすく、簡潔なコードにいたしました。

 

コードの解説をしていきます。

import matplotlib.pyplot as plt
import networkx as nw

今回はnetworkx以外にもグラフを可視化できるように、matplotlibライブラリを使用します。

 

G = nw.Graph()

 

ここではnetworkxで定義されているクラスを用いて、インスタンスの作成を行って変数に格納しています。

生成したインスタンスに対し各種メソッドを呼び出し、グラフの計算や加工を行なっていきます。

 

nw.add_path(G, [5, 1, 4, 3, 0, 7, 2, 8, 9, 6])
nw.add_path(G, [3, 0, 6, 4, 2, 7, 1, 9, 8, 5])

 

グラフの作成方法はいくつかありますが、今回はadd_pathメソッドを使って辺と頂点を指定しました。

 

nw.draw_networkx(G)
plt.show()

 

最後にdraw_networkxメソッドにてグラフを構築し、matplotlibの内部モジュールshowメソッドにより、グラフの表示を行います。

 

下記のようなグラフが表示されれば、完了です。

 

 

是非、数字を変えてみたり、CSVを使ってより複雑なグラフを作成してみて下さい。

まとめ

いかがでしたでしょうか?

 

今回はPythonのライブラリである、NetworkXを使ってグラフ作成を行いました。

 

本記事を通して、これからPython学習をされる方やスキルアップを目指す方の学習に少しでも貢献できればと思います。

 

今後ともPython記事をアップしていくので、引き続きよろしくお願い致します。

 

最後までご購読していただき、ありがとうございます!



ABOUTこの記事をかいた人

sugi

大学卒業後、IT企業に就職を果たす。システム開発・人工知能に触れながら大手企業と業務をこなす。2年半後脱サラし、現在フリーランス活動中。 2019年2月から起業する予定。 自社サービス及び製品を開発し、売り上げを立てている。