2015-09-15 9 views
4

Я пытаюсь сделать 100 Мультисервисный узел графа G в макете GraphViz в NetworkX питона, поэтому я сделал две попытки до сих пор:Рисование графика в макете GraphViz в питона с помощью nx.draw_graphviz дает ошибку

Trial 1nx.draw_graphviz функции следующего nx.draw_graphviz(G), но я получаю следующее сообщение об ошибке повторяется для всех узлов в графе:

Error: node 1, position [0.127506302389087, 0.3262608552621944], expected two doubles

Затем, пытаясь понять решение, я использовал пробные 2-получить pygraphviz график, но когда я пытаюсь рисовать nx.draw_graphviz(A) я получаю следующую ошибку:

AttributeError: 'AGraph' object has no attribute 'number_of_selfloops'

nx.graphviz_layout но возвращает словарь позиций введенных пользователя узлов, и я не знаю, как использовать его нарисуйте графический макет.

Note Я импортировал модули graphviz, pygraphviz и pydot, но я не знаю, какие из них действительно нужны для этого, но он по-прежнему не работает.

Есть что-то не хватает, чтобы нарисовать график networkx в графическом виде?

Полный Трассировка ошибок для

Trial 1

Traceback (most recent call last): 
    File "main.py", line 102, in <module> 
    d.display_graph(sub_normal,NEUTRAL_RANGE) 
    File "/home/abdallah/stage/Reputation_system/display.py", line 33, in display_graph 
    nx.draw_graphviz(G) 
    File "/usr/local/lib/python2.7/dist-packages/networkx-1.10-py2.7.egg/networkx/drawing/nx_pylab.py", line 982, in draw_graphviz 
    pos = nx.drawing.graphviz_layout(G, prog) 
    File "/usr/local/lib/python2.7/dist-packages/networkx-1.10-py2.7.egg/networkx/drawing/nx_pydot.py", line 257, in graphviz_layout 
    return pydot_layout(G=G,prog=prog,root=root,**kwds) 
    File "/usr/local/lib/python2.7/dist-packages/networkx-1.10-py2.7.egg/networkx/drawing/nx_pydot.py", line 277, in pydot_layout 
    D=P.create_dot(prog=prog) 
    File "/usr/lib/python2.7/dist-packages/pydot.py", line 1802, in <lambda> 
    lambda f=frmt, prog=self.prog : self.create(format=f, prog=prog)) 
    File "/usr/lib/python2.7/dist-packages/pydot.py", line 2023, in create 
    status, stderr_output)) 
pydot.InvocationException: Program terminated with status: 1. stderr follows: Error: node 0, position [0.7145101895899024, 0.9016482786797262], expected two doubles 

проба 2

Traceback (most recent call last): 
    File "main.py", line 102, in <module> 
    d.display_graph(sub_normal,NEUTRAL_RANGE) 
    File "/home/abdallah/stage/Reputation_system/display.py", line 33, in display_graph 
    nx.draw_graphviz(A) 
    File "/usr/local/lib/python2.7/dist-packages/networkx-1.10-py2.7.egg/networkx/drawing/nx_pylab.py", line 982, in draw_graphviz 
    pos = nx.drawing.graphviz_layout(G, prog) 
    File "/usr/local/lib/python2.7/dist-packages/networkx-1.10-py2.7.egg/networkx/drawing/nx_pydot.py", line 257, in graphviz_layout 
    return pydot_layout(G=G,prog=prog,root=root,**kwds) 
    File "/usr/local/lib/python2.7/dist-packages/networkx-1.10-py2.7.egg/networkx/drawing/nx_pydot.py", line 273, in pydot_layout 
    P=to_pydot(G) 
    File "/usr/local/lib/python2.7/dist-packages/networkx-1.10-py2.7.egg/networkx/drawing/nx_pydot.py", line 192, in to_pydot 
    strict=N.number_of_selfloops()==0 and not N.is_multigraph() 
AttributeError: 'AGraph' object has no attribute 'number_of_selfloops' 
+0

Какие версии питона и NetworkX? – Joel

+0

Python 2.7.6, что касается Networkx Я полагаю, что это 1.9.1 (но я не уверен, потому что я не знаю, как его получить) –

+1

'nx .__ version__' – Joel

ответ

0

Я использовал graphviz_layout и я успеха, вот мой пример Python:

try: 
    import pygraphviz 
    from networkx.drawing.nx_agraph import graphviz_layout 
except ImportError: 
    try: 
     import pydotplus 
     from networkx.drawing.nx_pydot import graphviz_layout 
    except ImportError: 
     raise ImportError("This example needs Graphviz and either " 
           "PyGraphviz or PyDotPlus") 
import networkx as nx 
plt.figure(figsize=(6,8)) 
pos=graphviz_layout(G) 
nx.draw_networkx_nodes(G,pos,nodelist=G.nodes(),node_size=node_sizes,\ 
linewidths=0.1,vmin=0,vmax=1,alpha=0.8,\ 
node_color=[D[n] for n in G.nodes()]) 
nx.draw_networkx_edges(G,pos,edgelist=G.edges(),width=0.1,\ 
edge_color="black",alpha=0.6) 
plt.axis('off') 
plt.tight_layout() 
plt.show() 

Вот еще один пример использования graphviz_layout с сайта NetworkX

https://networkx.github.io/documentation/networkx-1.10/examples/drawing/lanl_routes.html