Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用networkX输出树结构_Python_Networkx_Graphviz_Pygraphviz - Fatal编程技术网

Python 使用networkX输出树结构

Python 使用networkX输出树结构,python,networkx,graphviz,pygraphviz,Python,Networkx,Graphviz,Pygraphviz,我正在使用networkX生成一个树形结构,如下所示(我遵循以下步骤) 我想画一棵树,如下图所示。 但是,我得到一个错误,说AttributeError:module'networkx'没有属性'write\u dot'。我的networkx版本是1.11(使用conda)。我尝试了不同的方法,但没有一种有效 因此,我很想知道是否有其他方法可以使用networkx绘制树结构,以获得与图中所述类似的输出。请让我知道。我认为这个问题在networkx 2.x上得到了解决,但在此之前,您应该明确导入

我正在使用networkX生成一个树形结构,如下所示(我遵循以下步骤)

我想画一棵树,如下图所示。

但是,我得到一个错误,说
AttributeError:module'networkx'没有属性'write\u dot'
。我的networkx版本是1.11(使用conda)。我尝试了不同的方法,但没有一种有效


因此,我很想知道是否有其他方法可以使用networkx绘制树结构,以获得与图中所述类似的输出。请让我知道。

我认为这个问题在networkx 2.x上得到了解决,但在此之前,您应该明确导入这样的函数

from networkx.drawing.nx_agraph import write_dot


我希望这能起作用。

您可以完全使用
pygraphviz
绘制有向图

首先需要遵循以下步骤,因为没有
graphviz
(从现在起),pygraphviz不起作用

  • 从下载graphviz-2.38.msi并安装
  • 从以下位置下载2.7或3.4
    pygraphviz
    wheel文件
  • 导航到下载控制盘文件的目录并运行特定于平台的控制盘
    pip安装pygraphviz-1.3.1-cp34-none-win32.whl
  • dot.exe
    添加到主机路径 e、 g.在windows控制面板->系统->编辑环境变量->修改路径上
  • 之后,可以按如下方式创建
    dot
    png
    文件

    工作代码

    import pygraphviz as pgv
    
    G=pgv.AGraph(directed=True)
    
    #Attributes can be added when adding nodes or edge
    G.add_node("ROOT", color='red')
    for i in range(5):
        G.add_node("Child_%i" % i, color='blue')
        G.add_node("Grandchild_%i" % i, color='blue')
        G.add_node("Greatgrandchild_%i" % i, color='blue')
    
        G.add_edge("ROOT", "Child_%i" % i, color='blue')
        G.add_edge("Child_%i" % i, "Grandchild_%i" % i, color='blue')
        G.add_edge("Grandchild_%i" % i, "Greatgrandchild_%i" % i, color='blue')
    
    # write to a dot file
    G.write('test.dot')
    
    #create a png file
    G.layout(prog='dot') # use dot
    G.draw('file.png')
    
    PNG文件

    from networkx.drawing.nx_pydot import write_dot
    
    import pygraphviz as pgv
    
    G=pgv.AGraph(directed=True)
    
    #Attributes can be added when adding nodes or edge
    G.add_node("ROOT", color='red')
    for i in range(5):
        G.add_node("Child_%i" % i, color='blue')
        G.add_node("Grandchild_%i" % i, color='blue')
        G.add_node("Greatgrandchild_%i" % i, color='blue')
    
        G.add_edge("ROOT", "Child_%i" % i, color='blue')
        G.add_edge("Child_%i" % i, "Grandchild_%i" % i, color='blue')
        G.add_edge("Grandchild_%i" % i, "Greatgrandchild_%i" % i, color='blue')
    
    # write to a dot file
    G.write('test.dot')
    
    #create a png file
    G.layout(prog='dot') # use dot
    G.draw('file.png')