我想創建一個如下所示的圖表......但方式太複雜。我想爲每個方形節點使用不同的圖像,並且爲每個圓形節點使用相同的圖像。Graphviz是這種圖形的最佳工具嗎?
我想知道使用GraphViz是最佳選擇還是有其他選擇?
另外,我想知道如果我可以在GraphViz中爲圓圈創建一個模板節點並重用它?我不想一次又一次地指定圖像,形狀等屬性。
我想創建一個如下所示的圖表......但方式太複雜。我想爲每個方形節點使用不同的圖像,並且爲每個圓形節點使用相同的圖像。Graphviz是這種圖形的最佳工具嗎?
我想知道使用GraphViz是最佳選擇還是有其他選擇?
另外,我想知道如果我可以在GraphViz中爲圓圈創建一個模板節點並重用它?我不想一次又一次地指定圖像,形狀等屬性。
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的工作版本。在這種情況下,我會說它不適合你的需求。
當然,下面是在你的問題中繪製圖形的代碼(以下用點表示)。
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;
}
第一行有向圖爲向圖(爲圖表在 ,其邊緣具有的方向)。
第四個和第五個分別位於邊緣和 節點的默認屬性上方。換句話說,一旦你完成了這一步,你只需要樣式(包括屬性+值)的節點(或邊),你想要的樣式與默認值不同。通過創建子圖或分立的 組節點(請參閱點手冊),可以使多個節點「模板」具有多個節點「 」。
秩=相同允許你specifiy一組具有相同的 垂直位置節點(提供rankdir設置爲TB,這意味着 「頂部 - 底部」)。
默認情況下,節點名稱(例如,我的圖中的a,b,c)用作 節點的標籤。如果你不希望這樣的渲染圖所示做, 剛剛成立標籤= 「」