Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >无法在graphviz中打印聚类子图的标签和轮廓框

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

Stack Overflow用户
提问于 2012-10-02 22: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-02 23: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 10:40:22

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

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

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

https://stackoverflow.com/questions/12699222

复制
相关文章
Antlr4 语法解析器(下)
Antlr4 的两种AST遍历方式:Visitor方式 和 Listener方式。
awwewwbbb
2021/07/16
3.6K0
Antlr4  语法解析器(下)
使用antlr4构造我的语法树
编译器的前端和后端。前端指的是编译器对程序代码的分析和理解。前端阶段只与语言的语法有关,而和目标机器无关。后端则是生成目标机器的目标代码有关。第一节说说编译器的前端技术。
mariolu
2020/01/13
9.2K0
浅尝antlr4
这次使用antlr的诱因是whosbug中使用的ctags(另一个语法分析器)只对c系语言支持较好,对java等语言的支持欠佳(甚至可以说很差了),为了whosbug的鲁棒性我认为还是有必要换一个语法分析器的
Kevinello
2022/08/19
1.8K0
浅尝antlr4
2.antlr4开发
2.antlr4开发 上一篇:1.ANTLR4 helloworld基础开发与IDEA插件使用 获取源码 antlr4.7.2 1.通过MyHelloVisitor实现HelloVisitor package wang.xiaolei.lei; import org.antlr.v4.runtime.tree.ErrorNode; import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.RuleNode;
王小雷
2019/12/20
8830
2.antlr4开发
antlr4入门篇
ANTLR实际上有两件事:一种将您的语法转换为Java(或其他目标语言)的解析器/词法分析器的工具,以及生成的解析器/词法分析器所需的运行时。即使您使用ANTLR Intellij插件或ANTLRWorks来运行ANTLR工具,生成的代码仍将需要运行时库。
山行AI
2020/08/18
4.4K0
antlr4入门篇
Antlr4的相关用法
ANTLR (ANother Tool for Language Recognition) 是一个强大的解析器的生成器,可以用来读取、处理、执行或翻译结构化文本或二进制文件。他被广泛用来构建语言,工具和框架。ANTLR可以从语法上来生成一个可以构建和遍历解析树的解析器。
东风压倒西风
2022/11/23
6940
PHP通过设置系统环境变量来区分测试环境和正式环境【php】
3.如果公司有测试服务器和正式服务器两台,通过环境变量的方式来区分测试环境和正式环境是一个不错的办法
sinnoo
2020/11/13
1.5K0
手写一个简化版的 Spring Cloud!
你好,我是 Guide!这里是 JavaGuide 的「优质开源项目推荐」第 9 期,每一期我都会精选 5 个高质量的 Java 开源项目。
Guide哥
2022/11/07
4660
手写一个简化版的 Spring Cloud!
Java基础语法(二)jdk的安装和Java环境配置
其实如果使用全家桶系列的ide的话,这个环境配置是没有必要的,但是嘛,虽然没有必要,但还是要学的
全栈程序员站长
2021/04/23
4830
打破国外垄断,开发中国人自己的编程语言(1):编写解析表达式的计算器
本文是《打破国外垄断,开发中国人自己的编程语言》系列文章的第1篇。本系列文章的主要目的是教大家学会如何从零开始设计一种编程语言(marvel语言),并使用marvel语言开发一些真实的项目,如移动App、Web应用等。marvel语言可以通过下面3种方式运行:
蒙娜丽宁
2020/07/30
2.4K1
打破国外垄断,开发中国人自己的编程语言(1):编写解析表达式的计算器
Rust 使用 dotenv 来设置环境变量
在项目中,我们通常需要设置一些环境变量,用来保存一些凭证或其它数据,这时我们可以使用 dotenv 这个 crate。
solenovex
2022/03/10
3.3K0
Rust 使用 dotenv 来设置环境变量
Java 本地环境设置 原
如果你希望在你的本地环境中设置 Java 程序环境,下面的这部分将会指导你在你的本地计算机上下载和设置 Java 环境。你可以按照下面的步骤进行。
HoneyMoose
2019/01/30
8850
【深入浅出C#】章节 1:C#入门介绍:C#开发环境的设置和配置
当配置C#开发环境时,安装.NET Core是一个重要的步骤。以下是安装.NET Core的基本过程:
喵叔
2023/06/10
4.5K0
【深入浅出C#】章节 1:C#入门介绍:C#开发环境的设置和配置
批处理基本语法教程(4)实例讲解
我们可以看到,程序要求你输入你选择的结果,如果你输入的序号是1,那么打开百度官网,如果你输入的结果为2,那么打开360官网,如果你输入的结果不是1也不是2,那么从头执行并清屏
Chuanrui 初见之旅
2022/11/14
2090
批处理基本语法教程(4)实例讲解
Chapi —— 一个通用语言元信息转换器
来,一起用高效(hard way)的方式学习多种编程语言,Kotlin + Scala、Python、Go、Java、TypeScript、C#……
Phodal
2020/02/25
6880
Chapi —— 一个通用语言元信息转换器
设置java环境变量path_配置java环境变量path怎么设置[通俗易懂]
只需要在path中增加%JAVA_HOME%\bin; 即可。完整的JDK安装及环境变量配置如下:
全栈程序员站长
2022/06/24
2.5K0
使用 Roslyn 编译器服务
.NET Core和 .NET 4.6中 的C# 6/7 中的编译器Roslyn 一个重要的特性就是"Compiler as a Service",简单的讲,就是就是将编译器开放为一种可在代码中调用的服务, 通常在工作流引擎 或是规则引擎中都需要一项功能是计算表达式, 在没有Roslyn 之前我通常借助于Antlr [Antlr(“又一个语言识别工具”的缩写)是一个最初用Java编写的库,可以根据特殊的语法(文法)来构建复杂的解析器代码。它就像是一个用于语言解析的加强版的正则表达式。你可以编写某种语言的语法
张善友
2018/01/19
1.3K0
使用 Roslyn 编译器服务
Java 8 环境变量设置
现在下载的Java8,安装之后只有 java目录下只有一个jre文件夹了。 安装AndroidStudio 3.0.1之后,也一样 这样我们怎么配置java环境呢 ? 之前的配置大概是这样 CLASSPATH .;%JAVA_HOME%lib;%JAVA_HOME%lib\tools.jar; JAVA_HOME C:\Program Files\Java\jdk1.7.0_79 Path ;C:\Program Files\Java\jdk1.7.0_79\bin;C:\Prog
103style
2022/12/19
1.2K0
Java 8 环境变量设置
用antlr解析odata filter条件表达式
我最早接触antlr,是在刚开始工作后不久,那次需要用antlr实现一个功能:把gemfire的OQL(object query language)翻译成SQL语句,以便进行数据库操作。其实,简单讲,antlr就是一个非常方便的词法分析和语法分析的类库,基于这个类库,可以很容易的实现很多场景,比如计算器算术表达式的解析、各种编程语言的解析等。
Bruce Li
2020/03/18
3.1K1
Python和Java的语法对比,语法简
Python是一种广泛使用的解释型、高级编程、通用型编程语言,由吉多·范罗苏姆创造,第一版发布于1991年。可以视之为一种改良(加入一些其他编程语言的优点,如面向对象)的LISP。Python的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词)。相比于C++或Java,Python让开发者能够用更少的代码表达想法。不管是小型还是大型程序,该语言都试图让程序的结构清晰明了。
py3study
2020/01/16
1.7K0

相似问题

循环只迭代一次。

23

for循环只迭代一次。

32

循环只迭代一次。

12

VBA for循环只迭代一次

10

Python for循环只迭代一次。

27
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档