首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Graphviz:排列节点

Graphviz:排列节点
EN

Stack Overflow用户
提问于 2015-11-06 00:09:41
回答 2查看 2.6K关注 0票数 5

是否可以告诉GraphViz (点)尝试在不拉伸任何维度的情况下排列图形的节点?例如,如果我创建了一个包含25个节点且没有边的图,GraphViz会在一行中显示所有节点。我想要的是得到一个5x5“字段”的节点。

EN

回答 2

Stack Overflow用户

发布于 2015-11-06 07:34:27

结合不可见边的rank=same是你的朋友:

代码语言:javascript
复制
digraph Test 
{
    nodesep = 0.5;                 // even node distribution
    node [ shape = circle, width = 0.7 ];
    edge [ style = invis ];

    { rank = same; A; B; C; D; E }
    { rank = same; F; G; H; I; J }
    { rank = same; K; L; M; N; O }
    { rank = same; P; Q; R; S; T }
    { rank = same; U; V; W; X; Y }

    C -> { F G H I J } 
    H -> { K L M N O }
    M -> { P Q R S T }
    R -> { U V W X Y }
}

而不是最后四行,您可以简单地使用

代码语言:javascript
复制
A -> F -> K -> P -> U;

对于给定的节点,这将导致相同的结果,但当节点大小变化时,可能不太稳定。

票数 5
EN

Stack Overflow用户

发布于 2015-11-06 00:18:04

这意味着您必须想出一个算法来指定节点的位置。

看看这个问题:How to force node position (x and y) in graphviz

或者,您可以使用不可见边:

代码语言:javascript
复制
nodeA -> nodeB [style=invis]

在这两种情况下,您都必须通过指定节点的位置或将节点连接在一起来指定如何排列节点。

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

https://stackoverflow.com/questions/33549477

复制
相关文章

相似问题

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