読者です 読者をやめる 読者になる 読者になる

ぴろの狂人日記

2014年から頑張ってブログを継続しようと思います。「継続と習慣」を今年の目標にしたので、頑張って更新を続けようと思います。おいおいはレビューや数学や認知科学などについて記事を書いていければと思っています

Macでpython3の環境構築10---NetworkXの使い方1---

以前の記事

piroshhh.hatenablog.com

piroshhh.hatenablog.com

piroshhh.hatenablog.com

 

にて、Matplotlibをインストールしたものの、Networkxのプログラムを実行しても、ノードにラベルがつかない、といろいろ悩んでおりました。

 
で、解決策の一つがわかったので、自分のための忘備録もかねて書いておきたいと思います。

サンプルプログラムとして次のコードを使います。

プログラムの各行の意味などは、また別の機会に書きますが、最後の方の描画部分がポイントです。
import networkx as nx

from matplotlib import pyplot

def main() :
    g=nx.Graph()
              
    g.add_nodes_from([2,3,4,5])
    
    g.add_edge(2,3)
    
    e=(4,5)
    
    g.add_edge(*e)
    
    g.add_path([1,3,4,2])   #  ノードのリストを渡すと、ノードを順番通りにつなぐ道のりがグラフについかされる。

    nx.draw_networkx(g,pos=nx.spring_layout(g))        # この行が重要。nx.draw()ではない。posを指定しないとエラーになる。
    pyplot.show()
    


if __name__ == '__main__':
    main()


これまでは、nx.draw(g)などとしていましたがnx.draw_networkx(g,pos=nx.spring_layout(g)) とすれば改善するようです。

実際の実行結果がこちら。


となり、確かにノードにラベルがついております。


で話はそれますが、

if __name__ == '__main__':
    main()

の部分についてよく理解していなかったので調べてみました。

調べていたらとてもわかりやすい説明があったので、そちらのリンクを紹介しておきたいと思います。

azuuun-memorandum.hatenablog.com