我尝试使用networkx 1.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.11 x64,networkx 1.11,我已经在PATH中安装了dot
$var = "abc@def.org";
$var = preg_replace_callback(
'/(.)@(.)/',
function($match) {
return sprintf("&#%03d;@&#%03d;", ord($match[1]), ord($match[2]));
},
$var
);
echo $var,"\n";
。我错过了什么?
一旦有效,我怎么能用以下节点绘制图形:
与下图相似的东西
正如您在该图像中看到的那样,节点非常好地对齐
答案 0 :(得分:31)
在更高版本的networkx中,软件包布局已更改。您可以显式导入graphivz_layout函数。
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()