以下のようなグラフを作成したいのですが、複雑すぎます。正方形のノードごとに別々の画像を使用し、円のノードごとに同じ画像を使用したいと思います。
GraphVizを使用することが最良のオプションなのか、それとも他のオプションがあるのか知りたいのですが。
また、GraphVizでサークルノードのテンプレートノードを作成して再利用できるかどうか知りたいのですが。画像や形などの属性を何度も指定したくありません。
以下のようなグラフを作成したいのですが、複雑すぎます。正方形のノードごとに別々の画像を使用し、円のノードごとに同じ画像を使用したいと思います。
GraphVizを使用することが最良のオプションなのか、それとも他のオプションがあるのか知りたいのですが。
また、GraphVizでサークルノードのテンプレートノードを作成して再利用できるかどうか知りたいのですが。画像や形などの属性を何度も指定したくありません。
確かに、質問でグラフを描画するコードは次のとおりです (以下のドットで表示されます)。
digraph g {
rankdir = TB;
bgcolor = white;
edge[arrowsize=.7, color=black];
node[shape=box, color=black]
{rank=same; a, b, c};
{rank=same; d, e, f};
{rank=same; g, h};
{rank=same; i, j, k};
d[color=blue; shape=circle];
e[color=blue; shape=circle];
k[color=blue; shape=circle];
a -> d;
b -> d;
b -> e;
c -> e;
d -> g;
e -> h;
d -> i;
d -> j;
j -> k;
h -> k;
k -> f;
}
最初の行のdigraphは、有向グラフ(エッジに方向があるグラフ) 用です。
4 番目と 5 番目は、それぞれエッジとノードの設定されたデフォルト属性の上にあります。つまり、これを行ったら、デフォルト値とは異なるスタイルを設定したいノード (またはエッジ) のみをスタイル設定 (属性 + 値を含む) する必要があります。サブグラフまたは離散グループノードを作成することにより、複数のノード「テンプレート」を持つことができます(ドットマニュアルを参照)。
rank=sameを使用すると、同じ垂直位置を持つノードのグループを指定できます ( rankdirが「上から下」を意味するTBに設定されている場合)。
デフォルトでは、ノード名 (たとえば、グラフの a、b、c) がノードのラベルとして使用されます。レンダリングされたグラフにこれを表示したくない場合は、label=""を設定してください。
Graphviz は、あなたが求めているものに間違いなく適しています。メインの graphviz.org サイトは今のところダウンしているようですが、誰かが親切にもギャラリーのサンプル (ソース付き) を Flickr にミラーリングしてくれました。
http://www.flickr.com/photos/kentbye/sets/72157601523153827/
私の知る限り、「テンプレート」を作成することはできませんが、サークルに対して次のようなことができます。
node[shape=circle, color=white, style=solid];
node1;node2;node3;
これにより、ノードが定義され(ファイルを行ごとに評価する場合は「状態」と考えてください)、長方形に切り替える前に、その「状態」で円ノードを定義できます。
プラットフォームによっては、.dot ファイルをインポートして公開用に微調整することもできます。この形式には、多数のジェネレーターとコンバーターもあります。
Mac OS X 10.7 "Lion" で作業している場合は、Graphviz の動作するバージョンをまだ見つけたりビルドしたりできていないことに注意してください。その場合、あなたのニーズにはまだ適していないと思います.