2017-06-02 6 views
2

Python 2.7でgraphvizを知りました。単一のノードが描画された後にそのプロパティを変更することは可能ですか?Graphviz/Python:1つのノードが生成された後で単一ノードを再描画する

from graphviz import Digraph 
q = Digraph() 
q.node('a') 
q.node('b') 
q.edge('a','b') 

q 

Output of simple graph

それは事実の後に 'b' ノードの色を変更することは可能ですか?

q.node('b', color = 'blue') 

しかし、私はそれを生成した後に変更したいと思っています。

このリンクColor a particular node in Networkx and Graphviz

類推辞書

G.node[2]['fillcolor']='red' 

を更新するために、グラフの.nodeファイルプロパティを使用することを提案、私はエラーを与える

q.node['b']['color'] = 'blue' 

を試してみました:

--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-54-43b05071d09a> in <module>() 
----> 1 q.node['b']['color'] = 'blue' 

TypeError: 'instancemethod' object has no attribute '__getitem__' 

私はこれが前のケースのようにnetworkxを使用していないためかもしれないと思います。

また、graphvizドキュメントのhttp://graphviz.org/content/attrs も読んだことがありますが、私の実験結果はありませんでした。私はAPIドキュメントを読んできたし、それを編集することはできないと思う---クラブ

答えて

2

の古いガイ私はそれは簡単なものであると確信しているが、私はそれをしないのです...

構築後ノード。

networkxを使用したくない場合は、グラフを独自のデータ構造に保存し、グラフを使用して(再描画する準備ができた時点で)グラフビズグラフを作成してください。たとえば、青色でなければならないすべてのノードの名前のリストを保持し、graphvizグラフを作成する時点でそれを参照することができます。このようにモデルとレンダリングを分離することで、メンテナンスが容易になる場合もあります。

+0

私はnetworkxでいくつかの実験を試みました。これにはいくつかの非常に優れた機能がありますが、私が心に留めていることは純粋なgraphvizより少し複雑です。バッチとしてノードのカテゴリを更新するというあなたの考えは、私が最終的にやりたいことへの良いアプローチのように聞こえる。私はそのルートを試してみる。迅速な返信をありがとう。 – OldGuyInTheClub

関連する問題