python python-2.7 networkx

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