- Macでpythone3の環境構築4---Matplotlibのインストール1
- Macでpythone3の環境構築5---Matplotlibのインストール2
- Macでpythone3の環境構築6---Matplotlibのインストール3
にて、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()の部分についてよく理解していなかったので調べてみた。
調べていたらとてもわかりやすい説明があったので、そちらのリンクを紹介しておきたいと思う。
参考: Python - if __name__ == '__main__': の意味
0 件のコメント:
コメントを投稿