首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Graphviz更改边方向

Graphviz更改边方向
EN

Stack Overflow用户
提问于 2020-10-12 11:17:06
回答 1查看 125关注 0票数 1

我在hackmd上使用graphviz并像这样画了一张图

我的代码是:

代码语言:javascript
复制
digraph G {
    rankdir=LR
    node [color=black,shape=record]
    node0 [label="{<data>node 0|<next>}"]
    node1 [label="{<data>node 1|<next>}"]
    new_node [label="{<data>new_node|<next>}"]
    null0 [shape=none, label="NULL"]
    null1 [shape=none, label="NULL"]
    head [shape=none, label="head"]
    ptr [shape=none, label="ptr"]
    indirect [shape=none]
    
    head->ptr
    indirect->node0:next [constraint=false headport=s tailport=n];
    ptr->node0
    node0:next:c->node1 [arrowhead=normal, arrowtail=dot, dir=both, tailclip=false];
    node1:next:c -> null0 [tailclip=false, arrowtail=dot, dir=both]
    
    
    new_node:next:c->null1 [arrowhead=normal, arrowtail=dot, dir=both, tailclip=false];
    {rank=same; indirect node1;}
}

我希望node0和indirect在同一级别。然而,当我改变

代码语言:javascript
复制
{rank=same; indirect node1;} -> {rank=same; indirect node0;}

它们将显示错误消息:"Error: lost indirect node0 edge" The实际图形我想要的:

EN

回答 1

Stack Overflow用户

发布于 2020-11-03 02:47:24

更改您的布局以使用html样式标签而不是shape=record

代码语言:javascript
复制
digraph G {
    rankdir=LR
    node [color=black shape=none margin=0 height=.3 ]
    node0 [label=<<table border="0" cellborder="1" cellspacing="0"><tr><td port="data">node 0</td><td port="next">&nbsp;</td></tr></table>>]
    node1 [label=<<table border="0" cellborder="1" cellspacing="0"><tr><td port="data">node 1</td><td port="next">&nbsp;</td></tr></table>>]
    new_node [label=<<table border="0" cellborder="1" cellspacing="0"><tr><td port="data">new_node</td><td port="next">&nbsp;</td></tr></table>>]
    null0 [shape=none, label="NULL"]
    null1 [shape=none, label="NULL"]
    head [shape=none, label="head"]
    ptr [shape=none, label="ptr"]
    indirect [shape=none]
    
    head->ptr
    indirect->node0:next [constraint=false headport=s tailport=n];
    ptr->node0
    node0:next:c->node1 [arrowhead=normal, arrowtail=dot, dir=both, tailclip=false];
    node1:next:c -> null0 [tailclip=false, arrowtail=dot, dir=both]
    
    
    new_node:next:c->null1 [arrowhead=normal, arrowtail=dot, dir=both, tailclip=false];
    {rank=same indirect node0}
}

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

https://stackoverflow.com/questions/64311281

复制
相关文章

相似问题

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