Hash 使用graphviz(点)为节点创建顶部标签

Hash 使用graphviz(点)为节点创建顶部标签,hash,graphviz,dot,Hash,Graphviz,Dot,我需要创建一个表示可扩展散列结构的图。到目前为止,我已经成功地在graphviz中创建了图形(使用点工具)。。。然而,我在制作表示每个桶的位数的顶部标签时遇到了麻烦。。。我想做的事情与此类似: 我无法完成的是代表位的小2和1。。谁能解释一下我会怎么做 到目前为止,我的图表如下所示: digraph G { nodesep = 0.5; rankdir = LR; node [shape=record]; node0[label = "<f0>0 | <f1>1"];

我需要创建一个表示可扩展散列结构的图。到目前为止,我已经成功地在graphviz中创建了图形(使用点工具)。。。然而,我在制作表示每个桶的位数的顶部标签时遇到了麻烦。。。我想做的事情与此类似:

我无法完成的是代表位的小2和1。。谁能解释一下我会怎么做

到目前为止,我的图表如下所示:

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;}
有向图G{
nodesep=0.5;
rankdir=LR;
节点[形状=记录];
节点0[label=“0 | 1”];
节点1[label=“0010 | |”,toplabel=“1”];
子图簇0{
样式=填充;
颜色=白色;
节点[样式=填充,颜色=白色];
node0;
label=“i=1”;
}
节点0:f0->节点1;}

< P>如果你真的必须用Gravez做这个,你可以考虑使用。

我从维基百科中重新创建了上述示例:

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;
rankdir=LR;
节点[形状=无];
样条线=假;
n1[标签=<
2.
00
01
10
11
>];
标签=<
1.
A.
k2
>];
b[标签]=<
2.
B
k1
>];
c[标签=<
2.
C
k3
>];
n1:port00->a:porta;
n1:port01->a:porta;
n1:port10->b:portb;
n1:port11->c:portc;
正如你所看到的,代码并不漂亮。。。然而,结果很接近:


请注意,出于演示目的,顶部标签有一个变体-节点
a
使用嵌套表。

应该补充的是,graphviz开发人员自己喜欢类似html的表,而不是使用不推荐使用的记录API。