【问题标题】:pygraphviz has no attribute AGraphpygraphviz 没有属性 AGraph
【发布时间】:2019-06-03 13:31:36
【问题描述】:

我正在尝试构建一个应用程序来可视化网络。但是,我的 pygraphviz 安装似乎给我带来了麻烦。每次我尝试运行代码时,都会出现错误“AttributeError: module 'pygraphviz' has no attribute 'AGraph'”

我正在使用 Anaconda 发行版,我尝试使用几个不同的渠道安装 pygraphviz,但它总是给我同样的错误。我最终手动下载了 .whl 文件并使用 pip 安装它,如下所示:

howto install pygraphviz on windows 10 64bit

我正在使用 python 3.4 版运行 Windows 10 64 位机器。这是我尝试运行的一些代码示例(从 pygraphviz 安装中的示例文件夹复制):

from __future__ import absolute_import
from __future__ import unicode_literals
from __future__ import print_function
from __future__ import division

import pygraphviz as pgv

A=pgv.AGraph(directed=True,strict=True,rankdir='LR')

A.add_node(1,color='red') 
A.add_node(5,color='blue')

A.add_edge(1,2,color='green')
A.add_edge(2,3)
A.add_edge(1,3)
A.add_edge(3,4)
A.add_edge(3,5)
A.add_edge(3,6)
A.add_edge(4,6)

A.graph_attr['epsilon']='0.001'
print(A.string()) # print dot file to standard output
A.layout('dot') # layout with dot
A.draw('foo.ps') # write to file

这给了我错误“AttributeError:模块'pygraphviz'没有属性'AGraph'”。任何帮助将不胜感激!

【问题讨论】:

    标签: python graphviz pygraphviz


    【解决方案1】:

    在我的情况下,我不得不在我的旧程序(pygraphviz 使用 python 2.7)中替换以下行:

    my_graph = graphviz.AGraph(id="my_graph", name="my_graph", file=self.fileName)
    
    my_graph.layout(prog='dot')
    
    my_graph.draw(path="my_graph3.svg", format="svg")
    

    与:

    from graphviz import Source, render
    
    my_graph = graphviz.Digraph(name="my_graph", engine='dot')
    my_graph.src = Source(srcStr, filename=None, directory=None, format='svg', engine='dot', encoding='utf-8')
    my_graph.src.render('dot', 'svg', 'my_graph3.svg',renderer='cairo', formatter='cairo')
    

    srcStr 是一个字符串,如:

    digraph "pet-shop" {
        graph [rankdir=LR]
        node [shape=plaintext]
        edge [arrowhead=vee arrowsize=2]
        parrot
        dead
        parrot -> dead
    }
    

    虽然我认为这会创建一个 my_graph3.svg 文件,但它实际上会创建一个文件夹 svg,其中包含文件“dot.cairo.cairo.svg”。

    另外,它需要大量的试验和错误才能得到这个,所以如果它有帮助,我会发布它。 任何与改进参数相关的 cmet 表示赞赏。

    【讨论】:

      猜你喜欢
      • 2019-04-27
      • 2021-05-18
      • 2019-08-07
      • 2018-10-14
      • 2012-12-01
      • 2016-07-07
      • 1970-01-01
      • 2011-04-14
      • 2020-01-06
      相关资源
      最近更新 更多