web-dev-qa-db-ja.com

Graphvizで一連の頂点の周りに境界線を描く

Graphvizでグラフを描こうとしています。

頂点のセットの周りに点線を引いて、それらがより大きなエンティティの一部であることを象徴したいと思います。

たとえば、卵、鶏肉、ハムの3つの頂点がある場合、それらすべての周りに点線を描画し、その境界を食べ物としてラベル付けできるはずです。

51
user916315

clusterに配置することで、graphvizのノードをグループ化することができます。クラスターは、特定のレイアウトエンジン(ドット、fdpなど)がサポートする特別な種類のサブグラフであり、サポートされている場合、クラスター内のノードが一緒に描画されます。

ドキュメントから:

サブグラフの名前がclusterで始まる場合、Graphvizはサブグラフを特別なクラスターサブグラフとして認識します。サポートされている場合、レイアウトエンジンは、クラスターに属するノードが一緒に描画されるようにレイアウトを行い、クラスターの描画全体が境界の四角形内に含まれます。

良い点と悪い点について、クラスターサブグラフはDOT言語の一部ではなくの一部ではなく、特定のレイアウトエンジンによってのみ守られている構文規則であることに注意してください。


重要:サブグラフのIDはclusterで始まる必要があります。


例:

graph g{
 subgraph cluster_food {
    eggs; chicken; ham;
    label="Food";
    graph[style=dotted];
 }
}

ham, chicken and eggs

76
marapet