【问题标题】:Drawing NetworkX graph with Graphviz使用 Graphviz 绘制 NetworkX 图
【发布时间】:2021-07-27 21:46:41
【问题描述】:

我正在尝试绘制“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,在 pydot_layout D_bytes = P.create_dot(prog=prog) 文件“C:\Python27\lib\site-packages\pydot.py”,第 1734 行,在 new_method 中 format=f, prog=prog, encoding=encoding) 文件“C:\Python27\lib\site-packages\pydot.py”,第 1933 行,在创建中 raise OSError(*args) OSError: [Errno 2] "neato" not found in path.

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

import networkx as nx
import graphviz as gv

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

欢迎任何帮助。 谢谢。

Eneko。

【问题讨论】:

    标签: networkx graphviz


    【解决方案1】:

    通过添加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,prog,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= 解决方案之一保留为注释行。

    干杯。 埃内科

    【讨论】:

      猜你喜欢
      • 2019-10-27
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多