プログラミング学習を行なっていく中で、
「Pythonでどういったモノが作れるのか分からない、、」
「自分がどのくらい成長しているのか分からない、、」
といった悩みにぶち当たったことがあるのではないでしょうか?
そういった原因にあるのは、学習した内容をアウトプットしていないのが挙げられます。
プログラミングでは初めに基礎の学習から入りますが、インプットするばかりに自分が学習した成果を全く作成していないので、「プログラミングは自分には向いてない、、」などの妄想に陥り挫折してしまう方が沢山いるのです。
今回はそういった原因を解決するためにも、PythonのライブラリNetworkxを使ってグラフを作成していこうと思います。
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記事をアップしていくので、引き続きよろしくお願い致します。
最後までご購読していただき、ありがとうございます!