我想绘制一个问题“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