Macでpython3の環境構築10---NetworkXの使い方1---
以前の記事
にて、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