首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图列阵LR但堆积TB

图列阵LR但堆积TB
EN

Stack Overflow用户
提问于 2018-06-13 21:58:13
回答 1查看 2.3K关注 0票数 4
代码语言:javascript
复制
digraph G
{
    rankdir=LR;

    Array1 [ shape = record, label = "{ <a1>A(1) | <a2>A(2) | <a3>A(...) | <an>A(n)}"] ; 
    Array2 [ shape = record, label = "{ <b1>B(1) | <b2>B(2) | <b3>B(...) | <bn1>B(n+1)}"] ;  
    Array1:a1 -> Array2:b1 [style=solid];
    Array1:an -> Array2:bn1 [style=solid];
    {rank=same; Array1; Array2;}
}

我试图从左到右绘制两个数组,但Array1位于顶部,Array2位于底部。

用rank=same输出

正如您在图片中看到的,没有绘制箭头,但是布局应该是这样的。我也从点中得到了一些错误,但是我找不到任何有用的信息:

代码语言:javascript
复制
dot -Tpng algoA.dot -o algoA.png                                         :(
Warning: flat edge between adjacent nodes one of which has a record shape - replace records with HTML-like labels
  Edge Array2 -> Array1
Error: lost Array1 Array2 edge
Error: lost Array1 Array2 edge
代码语言:javascript
复制
digraph G
{
    rankdir=LR;

    Array1 [ shape = record, label = "{ <a1>A(1) | <a2>A(2) | <a3>A(...) | <an>A(n)}"] ; 
    Array2 [ shape = record, label = "{ <b1>B(1) | <b2>B(2) | <b3>B(...) | <bn1>B(n+1)}"] ;  
    Array1:a1 -> Array2:b1 [style=solid];
    Array1:an -> Array2:bn1 [style=solid];
    //{rank=same; Array1; Array2;}
}

移除rank=same的输出

如果代码中没有rank=same,我就会得到我想要的箭头,但不像我想要的那样--顶部是Array1,底部是Array2。错误信息消失了。我做错了什么?我尝试了几种方法,但它们都不适用于我,我总是得到一个错误的布局,或者我必须添加其他几个节点来绘制它,而那些不可见的箭头也不会被绘制。

EN

回答 1

Stack Overflow用户

发布于 2018-06-14 09:50:43

键在错误消息中:replace records with HTML-like labels。详细信息可以找到这里

根据您的代码以及我所理解的您想要实现的目标,这可以通过创建两个类似HTML的标签来实现。代码中的注释。

代码语言:javascript
复制
digraph so 
{
    # plaintext is being used to create HTML-like labels
    node [shape=plaintext]

    # no border for the table, a single border for each cell and
    # no distance between individual cells looks like record shape

    # PORTs being defined as addresses of individual cells
    # that edges can be directed to

    array1 [label=< 
        <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR>
            <TD PORT="a1">A(1)</TD>
            <TD PORT="a2">A(2)</TD>
            <TD PORT="ax">A(...)</TD>
            <TD PORT="an">A(n)</TD>
        </TR> </TABLE>>];

    array2 [label=< 
        <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR>
            <TD PORT="b1">B(1)</TD>
            <TD PORT="b2">B(2)</TD>
            <TD PORT="bx">B(...)</TD>
            <TD PORT="bn">B(n+1)</TD>
    </TR> </TABLE>>]; 

    array1:a1 -> array2:b1;
    array1:an -> array2:bn;
}

这产生了(我认为)你想要的东西:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50846877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档