我想在我的GraphViz關係圖中包含圖例或關鍵字。不過,我無法弄清楚要使用哪些代碼。我也想把它放在一個角落,但我知道的唯一的座標是左下角:pos="10,10!"
。在GraphViz中製作圖例/關鍵字
有誰知道我該如何獲得這個工作?
我想在我的GraphViz關係圖中包含圖例或關鍵字。不過,我無法弄清楚要使用哪些代碼。我也想把它放在一個角落,但我知道的唯一的座標是左下角:pos="10,10!"
。在GraphViz中製作圖例/關鍵字
有誰知道我該如何獲得這個工作?
我深信,graphviz的不應該用這樣的方式,但也可以使用HTML labels達到你想要的東西:
digraph {
Foo -> Bar -> Test;
Foo -> Baz -> Test;
{ rank = sink;
Legend [shape=none, margin=0, label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD COLSPAN="2"><B>Legend</B></TD>
</TR>
<TR>
<TD>Foo</TD>
<TD><FONT COLOR="red">Foo</FONT></TD>
</TR>
<TR>
<TD>Bar</TD>
<TD BGCOLOR="RED"></TD>
</TR>
<TR>
<TD>Baz</TD>
<TD BGCOLOR="BLUE"></TD>
</TR>
<TR>
<TD>Test</TD>
<TD><IMG src="so.png" SCALE="False" /></TD>
</TR>
<TR>
<TD>Test</TD>
<TD CELLPADDING="4">
<TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0" CELLPADDING="0">
<TR>
<TD BGCOLOR="Yellow"></TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
>];
}
}
這就是這個樣子:
定位的Legend必須像其他任何節點一樣完成(我使用rank = sink來獲得它到底部) - 您可以使用它的margin
屬性來調整位置。
編輯:
不使用的標籤,可能的方向去 - 我不知道它是否是完全消除ranksep
。
digraph {
mindist=0;
ranksep=0;
nodesep=0;
node[shape=box,margin="0,0",width=1, height=0.5];
edge [style=invis];
Legend[width=2];
Legend -> Foo;
Legend -> FooValue;
Foo -> Bar;
FooValue -> BarValue
Bar -> Baz;
BarValue -> BazValue;
edge [constraint=false];
Foo -> FooValue;
Bar -> BarValue
Baz -> BazValue;
}
,導致:
digraph {
rankdir=LR
node [shape=plaintext]
subgraph cluster_01 {
label = "Legend";
key [label=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0">
<tr><td align="right" port="i1">item 1</td></tr>
<tr><td align="right" port="i2">item 2</td></tr>
<tr><td align="right" port="i3">item 3</td></tr>
<tr><td align="right" port="i4">item 4</td></tr>
</table>>]
key2 [label=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0">
<tr><td port="i1"> </td></tr>
<tr><td port="i2"> </td></tr>
<tr><td port="i3"> </td></tr>
<tr><td port="i4"> </td></tr>
</table>>]
key:i1:e -> key2:i1:w [style=dashed]
key:i2:e -> key2:i2:w [color=gray]
key:i3:e -> key2:i3:w [color=peachpuff3]
key:i4:e -> key2:i4:w [color=turquoise4, style=dotted]
}
...
我用dot
。
如果您使用圖[splines=ortho]
:這些行的順序相反,則會出現一些問題。
點源:
digraph {
rankdir=LR
node [shape=plaintext]
graph [splines=ortho]
subgraph cluster_01 {
label = "Legend";
key [label=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0">
<tr><td align="right" port="i1">item 1</td></tr>
<tr><td align="right" port="i2">item 2</td></tr>
<tr><td align="right" port="i3">item 3</td></tr>
<tr><td align="right" port="i4">item 4</td></tr>
<tr><td align="right" port="i5">item 5</td></tr>
</table>>]
key2 [label=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0">
<tr><td port="i1" bgcolor='greenyellow'> </td></tr>
<tr><td port="i2"> </td></tr>
<tr><td port="i3"> </td></tr>
<tr><td port="i4"> </td></tr>
<tr><td port="i5"> </td></tr>
</table>>]
key:i1:e -> key2:i1:w [color=red]
key:i2:e -> key2:i2:w [color=gray]
key:i3:e -> key2:i3:w [color=peachpuff3]
key:i4:e -> key2:i4:w [color=turquoise4, style=dotted]
key:i5:e -> key2:i5:w [color=red, style=dotted]
}
}
這看起來在佈局方面不錯,但它需要手動輸入表中的每個項目,而不是使用現有的節點對象。我試圖嘗試子圖和集羣,但都不足以控制表格的佈局(我明白引擎負責決定正常圖形的最佳佈局,但是表格很容易佈局爲最佳,而且沒有花哨的計算應該是必需的;矩形很簡單)。 – Synetech 2011-01-21 18:00:42
我並不知道圖例必須由節點組成 - 我更新了一個朝着這個方向的例子,但沒有成功,至少如果你需要網格線的話。我不認爲你想要獲得什麼是可能的,即使是花哨的計算。其他工具可能更適合該任務。 – marapet 2011-01-25 21:37:21
**>我不知道圖例必須由節點組成**圖例是關於圖的,圖由節點和線組成。 **>我不認爲你想獲得什麼是可能的,即使是花哨的計算。其他工具可能更適合這項任務。**這將是不幸的;圖形工具不能提供圖形的關鍵部分似乎很奇怪。 :( – Synetech 2011-01-27 02:25:50