我想繪製一個問題「Collatz猜想」的數字,它在數字(節點標籤)之間形成一個很好的網絡。然而,使用networkx nx.spring_layout(G)
該溶液的最終情節在我得到重疊邊緣和節點: 防止用NetwrokX/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)
之外的其他佈局,這可能會更好地處理此問題。
'graphviz_layout'通常會做最好的工作。 ('from networkx.drawing.nx_agraph import graphviz_layout'。) – DyZ