python

您所在的位置:网站首页 matplotlib标签挤在一起 python

python

2023-08-31 20:56| 来源: 网络整理| 查看: 265

我正在尝试绘制问题“Collat​​z Conjecture”的数字,该问题在数字(节点标签)之间形成一个很好的网络。然而,在使用 networkx nx.spring_layout(G) 的解决方案的最终图中,我得到了重叠的边和节点:

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) 之外的其他布局,这可能会更好地处理这个问题。

最佳答案

了解 DYZ 关于使用 graphviz_layout() 的非常有用的评论,我想我应该在这里分享我的经验,以防其他人遇到类似的问题,因为进行此设置并不完全简单(至少对我来说,在 Ubuntu 16.04 上):

我找到了sudo pip install pygraphviz不起作用,因为它找不到所需的文件之一。然后我尝试了 sudo apt-get install graphviz libgraphviz-dev pkg-config接下来是 sudo pip install pygraphviz (感谢 this suggestion ),看起来它工作正常(即安装成功),但我仍然无法使用 graphviz_layout()通过 NetworkX。所以,我卸载了pygraphviz ( sudo pip uninstall pygraphviz )并按如下方式再次安装(感谢 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() 相比,节点重叠似乎更少,以及更美观的边长和簇间距方法。

关于python - 使用 NetwrokX/Matplotlib 防止边和节点重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46031272/



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3