2017-09-04 12 views
1

数値(ノードラベル)間に素敵なネットワークを形成する問題「Collat​​z Conjecture」の数をプロットしようとしています。しかし、networkx nx.spring_layout(G)を用いて溶液の最終的なプロットでIは重複エッジノードを取得: enter image description here enter image description hereNetwrokX/Matplotlibでエッジとノードのオーバーラップを防ぐ

としてnx.spring_layoutを(試行錯誤を介して)構成されている:

pos=nx.spring_layout(G,k = 0.004, iterations = 500, scale = 0.6) 
nx.draw(G, labels=labels, pos=pos, font_size = 6, alpha = 0.5, node_size = nodes.values()) 
plt.show() 

はありますプロッティングウィンドウに十分な空きスペースがある場合、このオーバーラップを防ぐ特別な方法はありますか?この場合のノードサイズは、次の値によって決定されます。len(G.neighbors(node)) ノードには3つ以上の隣接ノードがあり、最大ノードサイズは300に制限されて重複を防止します。 奇妙なことに、長い枝ではこれはかなりうまく処理されているようですが、[24,12,6,3,10]のような枝では画像のようにこの枝を十分に区別できません。全体的に重なっている。これをより良く処理できるnx.spring_layout(G)以外のレイアウトを使用する必要があるかどうかアドバイスしてください。

+0

'graphviz_layout'は通常、最も良い仕事をしています。 ( 'networkx.drawing.nx_agraph import graphviz_layout'から) – DyZ

答えて

0

graphviz_layout()を使用してDYZから本当に有益なコメントを受け取りましたが、私はこのセットアップを手に入れることが全く簡単ではなかったので、他の誰かが同様の問題を抱えている場合は、少なくとも、Ubuntu 16.04で):

sudo pip install pygraphvizが見つかりませんでした。必要なファイルの1つが見つかりませんでした。 sudo apt-get install graphviz libgraphviz-dev pkg-configの後にsudo pip install pygraphvizthis suggestionのおかげで)を試しました。となりました。インストールは成功しましたが、まだNetworkXでgraphviz_layout()を使用できませんでした。だから、私は(sudo pip uninstall pygraphvizpygraphvizをアンインストールし、(this threadに先端のおかげで)次のように再びそれをインストール:

sudo pip install pygraphviz --install-option="--include-path=/usr/include/graphviz" --install-option="--library-path=/usr/lib/graphviz/"

この仕事をした、とgraphviz_layout()とビジュアライゼーションがより少ないノードの重複を持っているように見えるんNetworkXのspring_layout()を使用すると同時に、エッジの長さとクラスタの間隔に対するより理想的なアプローチです。