标签: dot

控制graphviz(dot2tex)中节点的布局?

我是 graphviz 的新手,只是想知道如何确定图中的相对节点定位。例如,如果我想绘制一个简单的三角形“abc”,节点“a”在顶部,节点“b”和“c”在底部的同一层,我应该如何告诉graphviz布局根据需要节点?

我尝试了以下方法:

graph G
{
   node [shape="circle"];
   edge [lblstyle="auto"];

   {rank=min; "a"}
   a -- b [label = "-"];
   a -- c [label = "-"];
   {rank=same; "b" "c"}
   b -- c [label = "+"];
}
Run Code Online (Sandbox Code Playgroud)

但输出将节点 'a' 和 'b' 置于顶部的同一级别,节点 'c' 位于底部。

此外,是否可以在同一个图形中并排绘制两个这样的三角形(中间有一个合适的空间)?如果是,它是如何实施的?

非常感谢。

layout positioning dot graphviz dot2tex

3
推荐指数
1
解决办法
2620
查看次数

使用 Graphviz 创建图形限制表示的深度

我有一个 .dot 文件,它对具有很多级别的二叉决策树进行编码。为了可视化它,我使用命令dot -Tpng sample.dot > sample.png. 但是创建的 .png 是巨大的并且难以理解。所以我想知道是否可以限制从命令行输出文件中呈现的级别数,即我不想修改 -dot 文件,我只想调整 .png 输出的生成方式. 我阅读了文档,但找不到任何内容。

例如,如果我只想要决策树的前三个级别,是否有任何修饰符,例如:dot -Tpng sample.dot > sample.png -L 3

dot graphviz

3
推荐指数
1
解决办法
1858
查看次数

如何防止dot花费的时间过长?

当我在特定图表上运行 Graphviz 时,我得到

aromanov@ws:~/IdeaProjects/scalan$ dot -v -O -Tpng myfile.dot 
dot - graphviz version 2.26.3 (20100126.1600)
Activated plugin library: libgvplugin_pango.so.6
Using textlayout: textlayout:cairo
Activated plugin library: libgvplugin_dot_layout.so.6
Using layout: dot:dot_layout
Using render: cairo:cairo
Using device: png:cairo:cairo
The plugin configuration file:
    /usr/lib/graphviz/config6
        was successfully loaded.
    render  :  cairo dot fig gd map ps svg tk vml vrml xdot
    layout  :  circo dot fdp neato nop nop1 nop2 osage patchwork sfdp twopi
    textlayout  :  textlayout
    device  :  canon cmap cmapx cmapx_np dot eps …
Run Code Online (Sandbox Code Playgroud)

dot graphviz

3
推荐指数
1
解决办法
3777
查看次数

如何防止边缘标签弄乱graphviz中的布局?

我有一个简单的垂直图,使用以下代码看起来漂亮且对称,没有任何标签:

digraph test_alignment
{
    {rank=same; a -> b;}
    a -> c;
    b -> c;
    c -> d;
    d -> e;
    d -> f;
    {rank=same; e -> f;}
}
Run Code Online (Sandbox Code Playgroud)

初始图

我想标记 A 和 B 之间的边缘以及 E 和 F 之间的边缘,对每个标签使用相同的字符串。我期待相同的输出,除了带有相同标签的更长的 A->B 和 E->F 边。

不幸的是,一旦我向这些边之一添加标签,总体布局就会看起来有点歪斜(如果我向 E->F 边添加标签,结果是相似的):

digraph test_alignment
{
    {rank=same; a -> b [label="Label"];}
    a -> c;
    b -> c;
    c -> d;
    d -> e;
    d -> f;
    {rank=same; e -> f;}
}
Run Code Online (Sandbox Code Playgroud)

一个标签的同一张图

我对 graphviz 非常陌生,并且根据 Stack Overflow 上的许多问题,我一直在尝试不同的秩和约束组合,我尝试使用集群来查看它是否可以独立地保持顶部和底部正确对齐,并尝试使用dot、ccomp、gvpack 和neato 的组合产生了类似的结果。 …

label graph-theory dot graphviz edge-list

3
推荐指数
1
解决办法
2798
查看次数

使图表对于 sfdp 来说太大

我试图用 sfdp 可视化一个大图。该图有 5134 条边和 1735 个节点。当我尝试生成 .png 时:

sfdp -x -Goverlap=scale -Tpng data.dot > data.png
Run Code Online (Sandbox Code Playgroud)

我明白了:

sfdp: graph is too large for cairo-renderer bitmaps. Scaling by 0.687429 to fit
sfdp: failure to create cairo surface: out of memory
Segmentation fault.
Run Code Online (Sandbox Code Playgroud)

问题可能是我的节点不是点,因为当我生成没有“-Goverlap=scale”的 de .png 时,没有问题,但图形不可读。

有什么我可以做的吗?还有另一个工具可以做到这一点吗?

graph dot graphviz graph-visualization

3
推荐指数
1
解决办法
5307
查看次数

如何使用Graphviz绘制三个正方形,一个在另一个里面

我正在使用 Linux 以点语言使用 Graphviz 工具。我想画三个正方形,一个在另一个里面。下面的代码不正确:

graph A
 { label="a";

   subgraph cluster_A
     {
        b [shape=box,label="b"];
           subgraph cluster_b
                { 
                 c[label="c",shape=box];
                }
     }

 }
Run Code Online (Sandbox Code Playgroud)

linux dot graphviz

3
推荐指数
1
解决办法
1780
查看次数

绘制非常大的图表

我有一个非常大的点格式有向图。假设有 500 万个节点和约 5000 万个链接。我想尽可能用相当少量的重叠和相当短的链接来绘制它,没有文本标签,只有节点的小鸡点。我可以使用什么工具来可视化这一点?

我知道这是一个巨大的数据量,并且需要很长时间才能处理,但我希望它需要不到一周的时间。

graph dot graphviz

3
推荐指数
1
解决办法
942
查看次数

如何使用Dot和Graphviz循环布局完整的图形?

如何“循环”地布局图中的节点,类似于下图中的图形:

在此输入图像描述

graph dot graphviz

3
推荐指数
1
解决办法
2182
查看次数

以点文件的形式生成 AST

我正在使用 ANTLR4 生成 java 源代码的 AST,但我不得不转向 ANTLR3,因为我没有得到太多帮助和文档,而且确实很难继续。我设法生成 AST,但不是以可视格式生成。然后我遇到了一个很棒的答案 ,我确实能够在 DOT 文件中生成 AST,但有一个小问题。

我的代码:

import org.antlr.runtime.CommonTokenStream;
import org.antlr.runtime.ANTLRFileStream;
import org.antlr.runtime.tree.CommonTree;
import org.antlr.runtime.tree.DOTTreeGenerator;
import org.antlr.stringtemplate.StringTemplate;

class Main {

        public static void main(String[] args) throws Exception {
            parseFile("/home/satnam-sandhu/Workstation/ASTGenerator/resource/java/Blabla.java");
        }

    public static void parseFile(String f)throws Exception {

            JavaLexer lexer = new JavaLexer(new ANTLRFileStream(f));
            CommonTokenStream tokens = new CommonTokenStream(lexer);
            JavaParser parser = new JavaParser(tokens);
            CommonTree tree = (CommonTree)parser.compilationUnit().getTree();
            DOTTreeGenerator gen = new DOTTreeGenerator();
            StringTemplate st = gen.toDOT(tree);
            System.out.println(st);

    }

}
Run Code Online (Sandbox Code Playgroud)

我正在使用 gradle,所以我通过以下方式构建项目:

gradle clean …
Run Code Online (Sandbox Code Playgroud)

java dot abstract-syntax-tree antlr3

3
推荐指数
1
解决办法
2337
查看次数

2
推荐指数
1
解决办法
282
查看次数