发布
社区首页 >问答首页 >无法在graphviz中打印聚类子图的标签和轮廓框

无法在graphviz中打印聚类子图的标签和轮廓框
EN

Stack Overflow用户
提问于 2012-10-03 06:18:30
回答 2查看 2.5K关注 0票数 1

我是graphviz和DOT语言的新手。我试着用集群子图生成图形。然而,当我有集群时,每个集群都在脚本中精确地指定了节点位置,graphviz不会为集群生成轮廓框或标签!具体地说,如果我有以下DOT脚本:

代码语言:javascript
代码运行次数:0
复制
digraph G{
subgraph cluster0{
label="Cluster 0"
a->b
}
subgraph cluster1{
label="Cluster 1"
c->d
}
}

那么生成的图是:

但是,使用下面的DOT脚本,我准确地指定了4个节点的节点位置:

代码语言:javascript
代码运行次数:0
复制
digraph G{
subgraph cluster0{
label = "Cluster 0"
a[pos="10,200"]
b[pos="100,200"]
a->b
}
subgraph cluster1{
label = "Cluster 1"
c[pos="10,100"]
d[pos="100,100"]
c->d
}
}

请注意,在这种情况下,既没有打印集群的大纲框,也没有打印集群的标签!!在这种情况下,正如你所看到的,两个集群之间有一个明确的分界-集群不重叠,所以在原则上,graphviz应该不会有显示它们的问题,我说的对吗?

我怎么才能告诉graphviz无论如何都要绘制集群轮廓框和标签呢?在这方面的任何帮助都将非常感谢!

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-03 07:25:07

点布局引擎不支持pos属性。

若要渲染预定义了所有节点位置的图形,应使用带有-n选项的neatofdp

neato不支持集群(尽管它是seems it should now)。幸运的是,fdp做到了!

因此,您可以使用以下命令:

代码语言:javascript
代码运行次数:0
复制
dot -Tpdf -Kpdf -n -O filename.dot

代码语言:javascript
代码运行次数:0
复制
fdp -Tpdf -n -O filename.dot

不幸的是,节点相对于集群的位置是正确的,但是集群似乎仍然被fdp移动(-n开关并没有起到什么作用)。

我没有尝试最新的版本(我使用的是2.29.20120504),但如果最新的版本也不能工作,这可能是一个错误报告的案例。

顺便说一句,由于假设位置以英寸为单位,这将创建一个非常大的图形。

我使用fdp得到的输出(带或不带-n开关)-我添加了size=20来限制图像大小:

不使用pos的替代解决方案

代码语言:javascript
代码运行次数:0
复制
digraph G{
subgraph cluster0{
label = "Cluster 0"
{rank=same; a->b;}
}
subgraph cluster1{
label = "Cluster 1"
{rank=same; c->d; }
}

a -> c [style=invis];
}
票数 1
EN

Stack Overflow用户

发布于 2017-07-26 18:40:22

您的代码在viz.js上的svg中呈现得很好。我能够看到集群周围的边界。

也许你使用的graphviz版本是旧的,升级应该可以解决这个问题。

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

https://stackoverflow.com/questions/12699222

复制
相关文章

相似问题

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