我试图在python (v2.7)中使用pygraphviz和networkx来创建一个网络地图。我找到了一个脚本,它在堆栈溢出时看起来非常有用:
import networkx as nx
import numpy as np
import string
import pygraphviz
dt = [('len', float)]
A = np.array([(0, 0.3, 0.4, 0.7),
(0.3, 0, 0.9, 0.2),
(0.4, 0.9, 0, 0.1),
(0.7, 0.2, 0.1, 0)
])*10
A = A.view(dt)
G = nx.from_numpy_matrix(A)
G = nx.relabel_nodes(G, dict(zip(range(len(G.nodes())),string.ascii_uppercase)))
G = nx.to_agraph(G)
G.node_attr.update(color="red", style="filled")
G.edge_attr.update(color="blue", width="2.0")
G.draw('/tmp/out.png', format='png', prog='neato')在最后一行中我得到了一个错误,基本上找不到neato:
"ValueError:在path中找不到新的程序。“
该错误引用了用于agraph.py的pygraphviz文件,但是当我查看agraph.py时,我看不到任何可能导致问题的东西。
有什么办法解决这个问题吗?我正在使用windows和空闲来编写代码。谢谢!
发布于 2013-06-02 19:09:54
我也有同样的问题。下面是我所做的,以防其他人在Windows上很难让pygraphvis工作。
首先,我安装了graphviz。我试着安装pygraphvis推进器,但它无法工作。最后,我找到了非官方的Windows二进制文件,所以我安装了它。导入模块现在可以工作,但是调用G.layout()会导致上述错误。
打电话给neato -V是有效的,所以它就在我的路上。我发现问题在于python是在安装pygraphvis之前创建的命令提示符中运行的,因此路径没有被更新。重新启动命令提示符修复了这个问题,但是导致了一个新的错误,说明C:\Program不是一个有效的命令。
我认为pygraphvis可能没有正确引用路径,这意味着它在Program中的空间被切断了。我通过将它与一条没有空间的路径进行符号连接来解决这个问题。
mklink /d C:\ProgramFilesx86 "C:\Program Files (x86)"注意,这必须在管理模式下运行。您可以通过转到“开始”菜单,键入cmd,然后按Ctrl+shift+enter来完成这一操作。
在此之后,我编辑了我的路径以引用符号链接,重新启动cmd,一切都正常。
发布于 2013-02-04 20:31:14
问题是pygraphviz调用一个外部程序(称为内纳托的graphviz套件的一部分)来绘制图形。正在发生的事情是,您没有安装graphviz,当python试图调用它时,它会抱怨找不到它。实际上,pygraphviz只是一个包装器,它使您可以从python内部调用graphviz,但它本身不会做任何事情,默认情况下也不会安装graphviz。
最简单的解决办法是为情节尝试另一个解决方案,而不是neato。已接受的备选办法是:
neato
dot
twopi
circo
fdp
nop试一试,看看其中一种是否有效。否则,您可以安装graphviz,这将为您提供所需的程序。它在每个平台上都是开源的,所以安装它不成问题。
见http://www.graphviz.org/
如果您只需要一个图形的草图,您可以在networkx图上使用networkx.draw函数,它使用matplotlib创建一个交互式的绘图。
import networkx as nx
G = G=nx.from_numpy_matrix(A)
nx.draw(G)发布于 2018-10-15 07:38:32
你的问题是neato不见了。
neato是图形套件的一部分,你可以在你的电脑上安装,例如从这里。(我使用了.msi)
现在,neato被“安装”了,但是您的系统不知道在哪里。因此,将包含neato.exe的目录添加到PATH环境变量中。在Win10上,这可以用Start -> Edit environment variables for your account -> select path in the upper window -> edit -> New -> C:\Program Files (x86)\Graphviz2.38\bin\或其他安装目录来完成。
https://stackoverflow.com/questions/14679434
复制相似问题