NetworkXで地下鉄の最短経路を図化(虎ノ門ヒルズ駅開業)

最終更新日

Comments: 0

前回はネットワークとは無縁のゲームネタでしたが、今回は路線図ネタでいこうと思います。もう少し本来の使い方?をしましょう。ほとんどがネットで検索しての情報収集でしたが、紹介したオーム社『Pythonで学ぶネットワーク分析 ColaboratoryとNetworkXを使った実践入門』も使用しています。

 

作図結果

最短経路といっても全てを図化するのはしんどいので、虎ノ門ヒルズ駅周辺にしてみました。こちらの記事に神谷町~溜池山王・国会議事堂前の営業キロが0.9キロ短くなるので、表参道~六本木で値下げとなると記載されています。これがわかる図を作成してみました。(今回はデータをアップロードしていません。)

まずは単純にデフォルトで作成。虎ノ門はあえてずらして描画し、虎ノ門ヒルズ開業後の図は日比谷線と銀座線がクロスする位置にします。

デフォルトの青いノードの図からスタイルを変更していきます。エッジラベルを作成するコードは本に載っていました。理解するまでに時間がかかりましたが、わかると「なるほど!」と感じました。(辞書のキーがタプルで内包表記でFor文です・・・みたいな。間違っていたらすみません。)

 

次に最短経路を算出します。本にも掲載されていますが、経路や重みの計算ができそうにないので、こちらを参考にしました。これによって算出された経路と距離を図化します。試行錯誤してやっとできました。

 

同じように、開業後の図を作成します。

 

 

確かに0.9キロ短くなりました。まあ、紙に書いて電卓をたたいてもできる範囲ではありますが。ここで距離が開業により六本木からの距離が減少した駅(ノード)もわかるように表示してみます。

  

こういう表現もなかなか。使う機会はあるだろうか・・・。

 

 

まとめ

今回はNetworkXをつかって路線図の図化と最短経路の探索を行いました。正直手持ちの本だけでは情報が足らず、記事内になるリンク先や公式サイトを見ながら、試行錯誤して、やっとできた次第です。

全駅を対象にすれば面白いのでしょうが、膨大な量になりますのでこのくらいにしておきます。いずれ運賃の部分とリンクするような表現にはチャレンジしてみようと思います。

シェアする

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメントする