微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Graphviz 绘制 NetworkX 图

如何解决使用 Graphviz 绘制 NetworkX 图

我正在尝试绘制“Spring Layout”类型的图表。 我可以使用 NetworkX 这样做,但是我得到了一个无法整理的混乱图表。 我有一个 250 个分支图,表示一个具有回路和几个径向分支的电路。

我了解到可以使用 Graphviz 优化节点放置。 确实,NetworkX 似乎具有与 Graphviz 的链接功能,例如 nx.nx_pydot.graphviz_layout(G)

我尝试使用它,但收到以下错误消息:

pos = nx.nx_pydot.graphviz_layout(G) 文件 “C:\Python27\lib\site-packages\networkx\drawing\nx_pydot.py”,行 261,在graphviz_layout 返回 pydot_layout(G=G,prog=prog,root=root,**kwds) 文件“C:\Python27\lib\site-packages\networkx\drawing\nx_pydot.py”,行 第310话 D_bytes = P.create_dot(prog=prog) File "C:\Python27\lib\site-packages\pydot.py",line 1734,in new_method format=f,encoding=encoding) 文件 "C:\Python27\lib\site-packages\pydot.py",line 1933,in create 引发 OSError(*args) OSError: [Errno 2] 在路径中找不到“neato”。

我已经正确安装了这两个库,并通过键入以下内容将它们包含在我的 Python 代码中:

import networkx as nx
import graphviz as gv

我是否应该安装任何其他库以使其正常工作?

任何帮助都会受到欢迎。 谢谢。

Eneko。

解决方法

通过添加import pydot并使用pos = nx.nx_pydot.graphviz_layout(G,prog,root)设置节点位置解决了该问题 确实,它适用于以下 pos = nx.nx_pydot.pydot_layout(G)

最后,我的代码如下所示:

G = nx.Graph()
G.add_weighted_edges_from(BranchList)
prog='neato'
root=None
# pos = nx.nx_pydot.graphviz_layout(G,root)
pos = nx.nx_pydot.pydot_layout(G)
plt.figure()    
nx.draw(G,pos,edge_color='black',width=1,linewidths=1,node_size=10,node_color='blue',alpha=0.9)
plt.axis('on')
plt.show()

请注意,我将两种可能的节点定位 pos= 解决方案之一保留为注释行。

干杯。 内科

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。