属性错误:'module' 对象没有 'graphviz_layout' 属性,使用 networkx 1.11

2024-05-15 11:50:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用Networkx1.11绘制一些DAG,但我面临一些错误,下面是测试:

import networkx as nx

print nx.__version__

G = nx.DiGraph()
G.add_node(1,level=1)
G.add_node(2,level=2)
G.add_node(3,level=2)
G.add_node(4,level=3)

G.add_edge(1,2)
G.add_edge(1,3)
G.add_edge(2,4)

import pylab as plt
nx.draw_graphviz(G, node_size=1600, cmap=plt.cm.Blues,
                 node_color=range(len(G)),
                 prog='dot')
plt.show()

这是回溯:

Traceback (most recent call last):
  File "D:\sources\personal\python\framework\stackoverflow\test_dfs.py", line 69, in <module>
    prog='dot')
  File "d:\virtual_envs\py2711\lib\site-packages\networkx\drawing\nx_pylab.py", line 984, in draw_graphviz
    pos = nx.drawing.graphviz_layout(G, prog)
AttributeError: 'module' object has no attribute 'graphviz_layout'

我使用的是python 2.7.11x64,networkx 1.11,我已经安装了graphviz-2.38,路径中有dot可用。我错过了什么?

一旦它起作用,我怎么能用节点来绘制图表:

  • 使用白色背景色
  • 里面有标签
  • 有指向箭头
  • 无论是自动的还是手动的

类似下图的东西

enter image description here

如图所示,节点的对齐非常好


Tags: importnetworkxaddnodeas绘制pltlevel
1条回答
网友
1楼 · 发布于 2024-05-15 11:50:27

在较新版本的networkx中,包布局已更改。可以显式导入graphivz_布局函数。

import networkx as nx
import pylab as plt
from networkx.drawing.nx_agraph import graphviz_layout


G = nx.DiGraph()
G.add_node(1,level=1)
G.add_node(2,level=2)
G.add_node(3,level=2)
G.add_node(4,level=3)

G.add_edge(1,2)
G.add_edge(1,3)
G.add_edge(2,4)

nx.draw(G, pos=graphviz_layout(G), node_size=1600, cmap=plt.cm.Blues,
        node_color=range(len(G)),
        prog='dot')
plt.show()

enter image description here

相关问题 更多 >