37

有向グラフを印刷しようとしていますが、色や形などのさまざまなノード属性を変更し続けています。一度定義され、複数のノードに使用される変数を使用する方法はありますか?理想的には、次のようなものが欲しいです。

digraph g { 

building_color = "red"
land_color = "green"

farm  [ fillcolor=land_color]
barn  [ fillcolor=building_color]
house  [ fillcolor=building_color]

}

そのため、各ノードに移動しなくても、建物の色を1回変更できます。これは可能ですか?

4

3 に答える 3

30

繰り返しを避けるために、デフォルト値を定義できます。

digraph g{
   node[fillcolor=red];
   barn;
   house;
   ...
   node[fillcolor=green];
   farm;
   ...

   edge[color=red];
   barn -> house;
   edge[color=green];
   barn --> farm;
   house --> farm;
}

変数はサポートされていません。


より複雑な回避策は、グラフ パターンのスキャンおよび処理言語を使用するgvprことです

gvprグラフの読み取りと出力を行い、グラフ、ノード、および属性の追加と変更を可能にします。

たとえば、comment属性にカスタム情報を保存し、この属性の内容に基づいてスクリプトを動作させることができます。

thisおよびthis SO answer には、gvprスクリプトの例が含まれています。

于 2013-02-02T13:12:45.277 に答える
26

最も簡単な解決策は、一般的なテキストからテキストへのプリプロセッサを使用するm4ことです

SampleGraph.dot.m4:

digraph g { 

   define(`building_style',`style=filled, fillcolor = "red"')
   define(`land_style',`style=filled, fillcolor = "green"')

   farm  [label="Farm", land_style]
   barn  [building_style]
   house [label="House", building_style]
}

走るm4 SampleGraph.dot.m4 > SampleGraph.dot

結果SampleGraph.dot:

digraph g { 




   farm  [label="Farm", style=filled, fillcolor = "green"]
   barn  [style=filled, fillcolor = "red"]
   house [label="House", style=filled, fillcolor = "red"]
}
于 2015-05-20T07:37:15.053 に答える