2016-09-09 3 views
13

を持つ属性「graphviz_layout」を持っていない、ここでのテストだ:はAttributeError:「モジュール」オブジェクトが、私はnetworkx 1.11を使用して、いくつかのDAGを描画しようとしているが、私はいくつかのエラーに直面していますnetworkx 1.11

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を持つgraphviz-2.38をインストールしました。私は何が欠けていますか?

  • 利用白の背景色
  • は、自動または手動でうまく配置されている
  • 指示しまし矢印
  • 内部のラベルを持っている:それが動作すると

    は、どのように私は、ノードとグラフを描くことができ

下記の画像と同様のもの

あなたがそのイメージで見ることができるよう

enter image description here

、ノードが実際に整列されている素敵な

+0

'nx.graphviz_layout'または' nx.drawing.nx_agraph.graphviz_layout'のいずれかを使用してください。 –

+0

@ValentinLorentz 'nx.graphviz_layout'を試してみると、' AttributeError: 'module'オブジェクトには 'graphviz_layout'という属性はありませんが、 'nx.drawing.nx_agraph.graphviz_layout'というようなものがあります。 'nx.graphviz_layout(G、prog = 'dot')とnx.drawing.nx_agraph.graphviz_layout(G)のどちらも何も表示していません。あなたがこれのmcveの例を提供できるなら、私はあなたの答えを検証することができます、ありがとう! – BPL

+0

どのようにノードにラベルを付けて、そのテーマを持つようにグラフを取得しますか? – Arya

答えて

21

パッケージのレイアウトは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() 

enter image description here

+0

Graphvizはあなたが望むことをすることができます。投票していただきありがとうございますが、答えが与えられた後の質問を変更することはあまりいいことではありませんhttp://meta.stackoverflow.com/questions/296489/when-is-it-ok-to-extend-a-question-with-別の質問の後の最初の回答 – Aric

+0

あなたの質問に最初に挑戦したように賞金を授与する必要があります。私はあなたのフォローアップの質問に答えることができますが、あなたの元の質問とは異なります。 – Aric

+0

マイナーチェンジ@Aric: 'graphviz_layout'を明示的に使用する場合、' prog = '引数は' .draw'ではなく 'graphviz_layout'に渡す必要があります。 '' neato ''が仮定されていなければ(ドキュメントごとに)。 –

関連する問題