おわりんです。
今日は、pythonでネットワークグラフを作れるアプリを作ってみたのでそれを紹介します。私の記事では、プログラムソースの説明や、理論的仕組みについては、ほとんど触れません。プログラムが作りたいっていう人向けの記事ではなく、とにかく簡単にグラフを作成して成果物を作りたいっていう人向けの記事になります。アプリをダウンロードすれば誰も簡単にグラフ化できます。
ネットワークグラフとは
う~ん説明するとなるとなんか難しいのですが、様々な要素がどうのように繋がっているかを見えるようにするグラフだと思っています。イメージはこんなグラフを超簡単に作れるアプリを作ったのでそれを公開したいと思います。エクセルで簡単な表を作ってそれをグラフ化するといった感じでできます。
友達や組織の人の関係や、さまざまな事象と原因のつながりを見える化することが簡単にできたらなと思い、pythonを使ってアプリを作りました。ネットワークの中心人物は誰か?ネットワーク内のにはどんなグループがあるのか?ボトルネックになっている部分は何なのか。そんなことがグラフ化することで見えてきます。
pythonって本当に便利だなと思います。networkXというライブラリを使って簡単にグラフ化できます。ただ、プログラムから作成するといくら簡単とは言え、敷居があがってしまいなかなか手軽にはといかないと思います。なので、エクセルから簡単にグラフ化できるということなら直感的に誰でも使えるかなと思って、エクセルから作った表を簡単にネットワークグラフ化するアプリを作りました。
作成手順
作成手順を以下に説明します。
ファイルの準備
エクセルで下記のような表を作り、CSVファイルで保存します。(グラフ化の元データを作る)自分が、グラフ化したい要素関係をすべて記入する。大変かもしれませんけど直感的な作業なのでわかりやすいと思います。
target :目的、得られる結果などの要素、人物などを記入。
sourse :targetに対して必要な要素、原因になっている事象、繋がりのある人間など
weight :結びつきの強さ、重みづけ(node間の距離感が変化)
color :線(edge)の色を指定できる(図では「r」=red 赤)
width :線(edge)の太さを指定できる
NetworkkXには、グラフを自動決定する様々なアルゴリズムが用意されていますが、今回は、実際によく使われるspring layoutというアルゴリズムを使っています。
色の指定に関しては、ここの記事を参照(色の一覧表があるので参考にしてください)。
ネットワークグラフ01をダウンロード
下記URLからダウンロードして、「network_graph_01」アイコンを実行する。exeファイルのため、インストールとか何もいりません。クリックするだけで実行できます。
Pythonで作成しました。動作環境(Window11で動いています。その他でも動くと思うけれど、補償はできません。また悪意など全くありませんが、予期せぬ不具合などが起こりましたら自己責任でお願い致します。)
ここからアプリをダウンロード
https://drive.google.com/drive/folders/142xQg1K11ARccM2CH75cciXXEvuk4XwE?usp=sharing
ダウンロードできないとき(下記図どおりにやってみてください①から⑥)



アプリを立ち上げる(ダブルクリックしてしばらく待つ)
ソフトのコマンドに必要な情報を記入
CSVファイル選択 :「ファイルの準備」で作成したCSVファイルを選択。
画像保存場所 :出力した「ネットワークグラフ」を保存したい場所を選択します。
seedの値 :任意の数字を入れる。数字によってグラフの形を変えられます。好みの形をさがせると思います。上段と下段のグラフでわけてます。上段は単純なネットワークグラフ。下段は、色ごとにグループ分けしたネットワークグラフと、矢印つきのグラフ。
nodeの色 :指定すると円の色を自由に変えることができます。
グループ分け色数指定:ネットワークの中から何個のグループにわけるか指定できます。グループ分けの色の種類は、変えれません。そこまでの仕様は今回作らなかった。
ネットワークの中から、どんなグループが存在するかが探索することができます。グループ分けの方法としては、ガーバンニューマンアルゴリズムを採用しました。アルゴリズムの詳細は下記リンクを見てください。
起点要素 :起点要素を指定します。ネットワーク階層がどこまであるか、起点要素からネットワークの深さを分析して、ファイルを出力します。
実行
ネットワークグラフ作成(実行ボタン)を押すと、ソフト右にネットワーク図が表示される。画像ファイルは指定したフォルダに出力されています。
また、CSVファイル中のweightの重みづけをいろいろ変えても形が変わっていくので試してみてください。ちなみに、weightの重みづけをすべて「0.0001」など限りなく0に近づけると円状の散らばっていきます。
保存したフォルダに分析結果も表示されます。「sample.txt」というファイルの中を開くと確認できます。


ネットワークグラフ基本用語
参考にした教材
ネットワークグラフを勉強したい方(初心者でもわかりやすい教材)