Python問題集を解いてみよう!!

【Python】NetworkX を使って図を描いてみる

当ページのリンクには広告が含まれています。

Takuyaです。

今回はオープンチャットネタです。

LINE オープンチャットの Python 部屋に、

Pyボーイ

NetworkX というパッケージを使ってグラフを描画したいんだけど、うまくいきません。。。

というような投稿がありました。

この投稿で NetworkX というパッケージを知ったのですが、比較的簡単に使えたので、ご紹介します。

目次

NetworkX とは

NetworkX は Python のパッケージの1つです。

公式サイトはこちら。(たぶん)

公式サイトには、

NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.

https://networkx.github.io/

とあります。

Google 先生に翻訳してもらうと、

NetworkXは、複雑なネットワークの構造、ダイナミクス、および機能の作成、操作、および研究のためのPythonパッケージです。

ということで、何やらよくわかりません。

少し調べると、情報処理試験で出てくる PERT 図のような ノードとノード同士をつなぐ辺で構成されたネットワーク図が簡単に描けるようです。

PERT 図

図を描くだけではなく、ネットワーク分析、グラフ分析などができるパッケージのようですが、今回は NetworkX を使って、上記のような図を描画する方法をご紹介します。

確認環境

今回も Google Colab で確認しました。

便利ですよね。

必要なパッケージをインストール

Google Colab の場合はインストールは不要です。

ローカル環境で実施される方は pip で NetworkX と Matplotlib をインストールしてください。

図の表示に Matplotlib というライブラリを使います。

pip install networkx
pip install matplotlib

NetworkX でネットワーク図を描いてみよう

では早速、NetworkX を使用して、いくつか図を描いてみましょう。

ノードのみの図

まずはシンプルにノードだけを追加した図です。

NetworkX で書いたノードのみの図

この図を元に色々といじってみたいと思います。

ノードとノードをつなぐ辺(edge)を追加

ノードのみの図に、ノードとノードをつなぐ辺を追加して、ネットワーク図っぽくします。この辺のことを edge と呼ぶそうです。

edge を追加

全てのノード同士をつなぐようにしてみました。

edge を追加するとノードの位置が変わってしまうんですね。

さらに、描画するたびに位置が変わってしまうという。。。

ノードに位置情報を与える

edge を追加した図は描画するたびにノードの位置が変わってしまうので、ノードに位置情報を与えます。

ノードに位置情報を与えることで、毎回同じ図が描かれるようになります。

ノードに位置情報を与える

edge に方向を持たせる

最後に edge に方向を持たせてみます。

edge に方向を持たせる

まとめ

今回は、

NetworkX というパッケージを使ってネットワーク図を描く方法

をご紹介しました。

以上です。

スポンサーリンク

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次