2011-04-05 137 views
1

我需要创建一个表示可扩展哈希结构的图。到目前为止,我在graphviz中创建图形方面取得了成功(使用点工具)...但是,我无法制作顶级标签来表示每个存储桶的位数......我想要做的事情与此类似:使用graphviz创建节点的顶部标签(点)

Extendable hashing table on wikipedia

我没办法去完成是小2和1的代表位..任何人能解释我怎么会到处去这样做呢?

My图表到目前为止是这样的:

digraph G { 
nodesep = 0.5; 
rankdir = LR; 
node [shape=record]; 

node0[label = "<f0>0 | <f1>1"]; 
node1[label = "0010 | |", toplabel="1"]; 

subgraph cluster_0 { 
    style=filled; 
    color=white; 
    node [style=filled,color=white]; 
    node0; 
    label = "i = 1"; 
} 

node0:f0->node1;} 

result

回答

1

您可以考虑使用HTML-Like labels如果你真的必须这样做有graphviz的。

我重新从维基百科所提到的例子:

rankdir = LR; 
node [shape=none]; 
splines=false; 

n1[label=< 
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4"> 
<TR> 
<TD CELLPADDING="2">2</TD> 
<TD BORDER="0"></TD> 
</TR> 
<TR><TD COLSPAN="2" PORT="port00"> 00 </TD></TR> 
<TR><TD COLSPAN="2" PORT="port01"> 01 </TD></TR> 
<TR><TD COLSPAN="2" PORT="port10"> 10 </TD></TR> 
<TR><TD COLSPAN="2" PORT="port11"> 11 </TD></TR> 
</TABLE>>]; 

a[label=< 
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4"> 
<TR> 
<TD CELLPADDING="0" BORDER="0" COLSPAN="2"> 
    <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="2" FIXEDSIZE="TRUE" WIDTH="1" ALIGN="LEFT"><TR><TD>1</TD></TR></TABLE> 
</TD> 
</TR> 
<TR> 
<TD PORT="porta"> A </TD> 
<TD>k2</TD> 
</TR> 
</TABLE>>]; 

b[label=< 
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4"> 
<TR> 
<TD CELLPADDING="2">2</TD> 
<TD BORDER="0" COLSPAN="2"></TD> 
</TR> 
<TR> 
<TD PORT="portb" COLSPAN="2"> B </TD> 
<TD>k1</TD> 
</TR> 
</TABLE>>]; 

c[label=< 
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4"> 
<TR> 
<TD CELLPADDING="2">2</TD> 
<TD BORDER="0" COLSPAN="2"></TD> 
</TR> 
<TR> 
<TD PORT="portc" COLSPAN="2"> C </TD> 
<TD>k3</TD> 
</TR> 
</TABLE>>]; 

n1:port00 -> a:porta; 
n1:port01 -> a:porta; 
n1:port10 -> b:portb; 
n1:port11 -> c:portc; 

正如你看到的,代码不漂亮......然而,结果接近:

http://graph.gafol.net/evEKgxwgj

graphviz output

请注意,用于演示目的的顶级标签有变化 - 节点a使用嵌套表格。

+1

应该补充说graphviz开发者自己喜欢类似html的表格,而不是使用弃用的记录API。 – 2015-11-02 23:51:41