python - AttributeError: el objeto ''módulo'' no tiene atributo ''graphviz_layout'' con networkx 1.11
python-2.7 (1)
El diseño del paquete ha cambiado en las versiones posteriores de networkx. Puede importar la función graphivz_layout explícitamente.
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()
Estoy tratando de dibujar algunos DAG usando networkx 1.11 pero me enfrento a algunos errores, aquí está la prueba:
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()
Y aquí está el rastro:
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''
Estoy usando python 2.7.11 x64, networkx 1.11 y he instalado graphviz-2.38 con dot
disponibles en PATH. ¿Qué me estoy perdiendo?
Una vez que funciona, ¿cómo podría dibujar la gráfica con nodos que:
- Usar color de fondo blanco
- Tener etiquetas dentro
- Tener flechas dirigidas
- Se organizan bien ya sea de forma automática o manual
Algo similar a la imagen de abajo.
Como se puede ver en esa imagen, los nodos se alinean muy bien