【问题标题】:Create top labels for nodes using graphviz (dot)使用 graphviz(点)为节点创建顶部标签
【发布时间】:2011-07-30 05:44:29
【问题描述】:

我需要创建一个表示可扩展散列结构的图。到目前为止,我已经成功地在 graphviz 中创建了图表(使用 dot 工具)......但是我无法制作代表每个桶的位数的顶级标签......我想做的是类似于这样的事情:

我无法完成的是代表位的小 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;}

【问题讨论】:

    标签: hash graphviz dot


    【解决方案1】:

    如果您确实必须使用 graphviz 执行此操作,您可以考虑使用 HTML-Like labels

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

    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

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

    【讨论】:

    • 应该补充一点,graphviz 开发者自己更喜欢类似 html 的表格,而不是使用已弃用的记录 API。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 2021-02-25
    相关资源
    最近更新 更多