5

NetworkX と graphviz_layout を使用して多数のノードを含むグラフをプロットしようとしたときに問題が発生しました。より具体的には、nx.graphviz_layout に渡される引数はまったく役に立ちません。添付は私が使用するコードです:

G=some_graph()

import matplotlib.pyplot as plt
plt.figure(figsize=(32,32))

# use graphviz to find radial layout
pos=nx.graphviz_layout(G,prog="dot",
                       root=1000,
                       args='-splines=true -nodesep=0.6 -overlap=scalexy'
                       )

nx.draw(G,pos,
        with_labels=True,
        alpha=0.5,
        node_size=600,
        font_size=10
        )

plt.savefig("imagenet_layout.png")

nx.graphviz_layout の「args」をどのように変更しても、出力画像は同じになり、すべてのノードが互いに重なります。誰でもこれで私を助けることができますか?ありがとう!

4

3 に答える 3

1

pygraphviz のドキュメントを読んだところ、.pygraphvizoverlapでは動作しないことが示唆されましたdot

の場合nodesep:

ドットで、これは同じランクの 2 つの隣接するノード間の最小スペースをインチ単位で指定します。

観察しているオーバーラップが同じランク内のノード間であるか、ランク間であるかは明らかではありません。ランクの間だけの場合は、変更することをお勧めしますranksep

位置を設定していて、後でノードサイズを設定していてnode_size、デフォルトよりもかなり大きくなっていることがわかります(600対300)。node_sizeを見つけたときに何を使用するかがわからないためpos、十分な大きさの を使用node_sizeするとオーバーラップが発生します。

node_sizeですので、デフォルトのままで、重なりが残る場合はnode_size小さめに設定することをお勧めします。ranksepランク間またはランク内の分離が不均衡であるという問題がある場合は、およびで遊んでnodesepください。

于 2015-09-08T02:41:42.103 に答える