2017-12-23 48 views
1

GraphVizでは、辺の幅はweight属性で表されます。いくつかのグラフでは、ノードは重みを有することもでき、例えば、私の場合、ノードの重みは、集約ステップ後の内部エッジの数を示す。GraphVizでノードの重みを表現する方法は?

残念ながら、ノードにはweight属性はありません。ノードにはwidthという属性がありますが、これは表示目的のみです(インチ単位のセマンティクスが固定されています)。

GraphViz/DOT言語でノードの重みを表す最も良い方法は何ですか?

+0

あなたは 'weight'という名前のものも含め、ノードに任意の属性を追加することができます。しかし、私は、グラフが可視化される方法で何かを変更するように 'weight'も望んでいると思います。それは何ですか? –

+0

@DiomidisSpinellis私はグラフの表示方法についてではなく、グラフ自体を表現することを考えています(DOTは両方の目的でよく使用されます)。私は、何かが表示されている方法から厳密に切り離されるべきであると信じています。 –

+0

私はデカップリングと全く同意します。あなたの明確化に基づいて私の答えを見てください。 –

答えて

0

ノードにweight属性を追加します。その後、weightに基づいてgvprでグラフを処理することができます。例として、次のグラフを考えてみましょう。

digraph weighted { 
    a [weight = 5]; 
    b [weight = 2]; 
    c [weight = 12]; 
    d [weight = 7]; 

    a -> b -> c -> d; 
} 

次のようなスクリプトを使用してgvpr、とそれを処理することによって、そのノードに色をすることができます。

N [weight >= 5 ] {color="red"} 
N [weight < 5] { color = "blue"} 

このスクリプトを使用してグラフを処理し、次の出力を生成するよう、以下の

gvpr -c -f t.gvpr foo.dot | dot -Tpng -ocolored.png 

ようにコマンドを使用して、ドットに結果を渡します。

enter image description here

関連する問題