2013-02-04 12 views
7

pygraphvizとnetworkxをpython(v 2.7)でネットワークマップを作成しようとしています。私は基本的にそれが格好いい見つけることができない、最後の行にエラーが発生しますWindowsでpygraphvizからneatoを実行する方法

import networkx as nx 
import numpy as np 
import string 
import pygraphviz 

dt = [('len', float)] 
A = np.array([(0, 0.3, 0.4, 0.7), 
       (0.3, 0, 0.9, 0.2), 
       (0.4, 0.9, 0, 0.1), 
       (0.7, 0.2, 0.1, 0) 
       ])*10 
A = A.view(dt) 

G = nx.from_numpy_matrix(A) 
G = nx.relabel_nodes(G, dict(zip(range(len(G.nodes())),string.ascii_uppercase)))  

G = nx.to_agraph(G) 

G.node_attr.update(color="red", style="filled") 
G.edge_attr.update(color="blue", width="2.0") 

G.draw('/tmp/out.png', format='png', prog='neato') 

"ValueError: Program neato not found in path."

エラーがためagraph.pyファイルを参照する私はstackoverflowのに非常に便利になりますスクリプトを見つけましたpygraphvizしかし、私はagraph.pyを見て、問題を引き起こす可能性のあるものを見ることができません

これを解決する方法はありますか?私はコーディングにWindowsとIDLEを使用しています。 ありがとう!

答えて

1

問題は、pygraphvizが、グラフを描くために、外部プログラム、neatoと呼ばれるgraphvizスイートの一部を呼び出してしまうことです。何が起こっているのは、graphvizがインストールされておらず、Pythonがそれを呼び出そうとしたときに、それが見つからないと不平を言うことです。実際pygraphvizはPython内部からgraphvizを呼び出すことができるラッパーですが、それ自体は何もせず、デフォルトでgraphvizをインストールしません。

最も簡単な解決策は、neatoの代わりにプロットのために別の解決策を試すことです。受け入れオプションは以下のとおりです。

neato 
dot 
twopi 
circo 
fdp 
nop 

それらのいずれかを試してみて、そのうちの一つが機能するかどうかを確認します。それ以外の場合は、必要なプログラムを提供するgraphvizをインストールすることができます。それはすべてのプラットフォームで利用可能なオープンソースのプログラムなので、インストールするのは問題ではありません。あなたは単にあなたがインタラクティブなプロットを作成するために、matplotlibのを使用していますnetworkxグラフ、上networkx.draw機能を使用することができ、グラフのスケッチを持っている必要がある場合は

http://www.graphviz.org/

でご覧ください。

import networkx as nx 
G = G=nx.from_numpy_matrix(A) 
nx.draw(G) 
+0

まず、お返事ありがとうございます。私はgraphvizをインストールしています。今すぐスクリプトを実行すると、次のエラーが表示されます。 トレースバック(最新のコールが最後に行われました): ファイル "C:/Python27/2_5.py"、行22、 G.draw( '/ tmp/out。 ファイル "C:¥Python27¥lib¥site-packages¥pygraphviz¥agraph.py"、1422行目、描画中 fh = self._get_fh(パス、「フォーマット」=「png」、ファイル: "ファイル:C:\ Python27 \ lib \ site-packages \そのようなファイルやディレクトリはありません: '/tmp/out.png' – Amlanza

+0

ファイル/tmp/out.pngを作成する際に問題があります。これは、オペレーティングシステムの可能性があります。/tmpはすべてのLinuxディストリビューションの通常のディレクトリなので、ファイルを作成するだけです。 Windows上で作業している場合は、ディレクトリが存在しない可能性があります(存在しないディレクトリにファイルを作成しようとしています)。ディレクトリを指定せずに '' out.png ''だけに置き換えると、現在のディレクトリにディレクトリを作成しても問題ありません。これがトリックであれば教えてください! – EnricoGiampieri

8

私は同じ問題がありました。ここでは、他の誰かがWindows上でpygraphvisを動作させるのに苦労している場合に、私がしたことがあります。

まず、graphvizをインストールしました。 pygraphvis thrugh pipをインストールしようとしましたが、動作を拒否しました。結局、私は非公式のWindowsバイナリを見つけたので、それをインストールしました。モジュールのインポートは今では機能しますが、G.layout()を呼び出すと上記のエラーが発生します。

neato -Vと呼んでいるので、それは私のPATHにありました。問題はpythonがpygraphvisをインストールする前に作成されたコマンドプロンプトで実行されていたため、PATHが更新されていないということでした。コマンドプロンプトを再起動するとこれが修正されましたが、新しいエラーが発生しました。有効なコマンドではないC:\Programに関するものです。

私は、pygraphvisがパスを正しく引用していない可能性があると考えました。これは、Program Files内のスペースで切り捨てられることを意味します。スペースを入れずにパスにシンボリックリンクすることで問題を解決しました。

mklink /d C:\ProgramFilesx86 "C:\Program Files (x86)" 

これは管理モードで実行する必要があります。スタートメニューに移動してcmdを入力し、Ctrl + Shift + Enterを押して実行できます。

これ以降、PATHを編集してシンボリックリンクを参照し、cmdを再起動してすべての作業が完了しました。

+0

私はそれを解決してくれてありがとう – kifcaliph

関連する問題