gvpack(graphviz)不保留单个有向图的标签

gvpack(graphviz)不保留单个有向图的标签,graphviz,dot,neato,Graphviz,Dot,Neato,有四个点文件(cluster_0、cluster_1、cluster_2、cluster_3)需要合并到一个点文件中 各个点文件的代码如下所示 digraph cluster_0{ sortv=1; penwidth=0;pencolor=transparent; label="1A"; rankdir=LR; node [fontname = "times-roman-bold",fontsize=12]; edge [fontname = "times-roman-bold

有四个点文件(cluster_0、cluster_1、cluster_2、cluster_3)需要合并到一个点文件中

各个点文件的代码如下所示

digraph cluster_0{
sortv=1;
penwidth=0;pencolor=transparent;
label="1A";
rankdir=LR;
 node [fontname = "times-roman-bold",fontsize=12];
        edge [fontname = "times-roman-bold",fontsize=12,arrowsize=0.75];
    1 [label="1:A"];
    2 [label="2:C"];
    3 [label="3:G"];
    3 -> 1
    1 -> 2
    3 -> 2
    2 -> 3
}
digraph cluster_1 {
sortv=2;
penwidth=0;pencolor=transparent;
 label="1B";
 node [fontname = "times-roman-bold",fontsize=12];
        edge [fontname = "times-roman-bold",fontsize=12,arrowsize=0.75];
    rankdir=LR;
    11 [label="1:A"];
    12 [label="2:C"];
    13 [label="3:G"];
    14 [label="4:T"];
    14 -> 11
    11 -> 12
    12 -> 13
    12 -> 14 
    13 -> 14
}
digraph cluster_2 {
    rankdir=LR;
  sortv=3;
penwidth=0;pencolor=transparent;
  label="1C";
 node [fontname = "times-roman-bold",fontsize=12];
        edge [fontname = "times-roman-bold",fontsize=12,arrowsize=0.75];
    21 [label="1:A"];
    22 [label="2:C"];
    23 [label="3:G"];
    24 [label="4:T"];
    25 [label="5:A"];
    24 -> 21
    21 -> 22
    21 -> 25
    25 -> 22
    22 -> 23
    23 -> 24
}
digraph cluster_3{
        sortv=4;
penwidth=0;pencolor=transparent;
        label="1D"
 node [fontname = "times-roman-bold",fontsize=12];
        edge [fontname = "times-roman-bold",fontsize=12,arrowsize=0.75];
    rankdir=LR;
    31 [label="1:A"];
    32 [label="2:C"];
    33 [label="3:G"];
    31:c -> 31:w
    32 -> 31 [dir=both,len=1.25];
    33 -> 31 [dir=both,];
    32 -> 32
    33 -> 32 [dir=both,];
    33 -> 33
}
为了生成一个合并的单点文件…我运行了以下命令

neato -Gstart=5 cluster_0.dot cluster_1.dot cluster_2.dot cluster_3.dot | gvpack -array_u4 | neato -n2 -s -Teps -o merge.eps 
neato -Gstart=5 cluster_0.dot -Teps -o cluster_0.eps
merge.eps做得很好,但是单个图形的标签丢失了。如何在输出合并文件中保留单个图形的标签?有人能帮忙解决这个问题吗

在这里,我附加了一个单独的文件,其中显示了标签 我使用以下命令编译了单个文件

neato -Gstart=5 cluster_0.dot cluster_1.dot cluster_2.dot cluster_3.dot | gvpack -array_u4 | neato -n2 -s -Teps -o merge.eps 
neato -Gstart=5 cluster_0.dot -Teps -o cluster_0.eps

我还附加了合并输出文件,该文件删除了图形的标签。谢谢:)

这不是一个答案,而是分享经验:事实证明,在尝试各种选项时,似乎是
neato
引擎压倒了标签。如果使用
,可能无法获得所需的确切布局,但可以获得标签:

dot -Gstart=5 cluster_0.dot cluster_1.dot cluster_2.dot cluster_3.dot | gvpack -array_u4 | dot -n2 -s -T jpg -o merge.jpg
给你

我个人倾向于使用一个主文件
so.m4

digraph so 
{
    define(`digraph',`subgraph')
    rankdir=LR;
    include(cluster_0.dot)
    include(cluster_1.dot)
    include(cluster_2.dot)
    include(cluster_3.dot)
}
我用它来处理

m4 so.m4 > so.dot
在生成的
so.dot
文件中,我将所有集群组合在一起,我可以使用一个简单的

dot -T png -o so.png so.dot
这样做的好处是,您可以将主文件用于“全局选项”。我认为使用所有管道和选项时,它比命令更容易维护,也不那么麻烦。但这是品味的问题

选择
rankdir=LR生成此版本:


玩得开心-很高兴做得更多,但我需要更多地了解您的项目。

来自
man gcoack
文件:输入图形不应该有标签,因为这将在其布局中使用。由于gvpack忽略根图标签,因此生成的布局可能包含一些额外的空间。这被认为是一个bug,但它确实存在……谢谢@vaettchen的回复:)所以没有办法用gvpack获得标签?我不知道gvpack是否有足够的权限来确认这一点,但似乎是这样。使用
awk
m4
预处理单个文件,并将它们合并为一个
dot
文件不是一个选项?@vaettchen谢谢:)我会尝试!你可以从中得到一些灵感;或者给我一两个小时,我会想出一些办法。这很有趣。但我想分享的一点是,neato引擎在单个文件中使用时不会抑制根图的标签。您可以尝试我在原始post-neato-Gstart=5中共享的命令。合并gvpack会带来麻烦。对于我们的项目,我们应该让neato引擎查找输出图:)就像我在原始帖子中共享的一样。有没有办法使用m4包含单个点文件的布局选项?我发现,
neato
只在图上保留标签级别,而不是子图。这就是为什么使用
cluster\u 0
编译只起作用,但打包版本,无论是使用
gvpack
还是使用'm4',都不会起作用。明白了!:)组合版本将忽略单个文件的标签。非常感谢@vaettchen。最后我得到了期望的输出。我在一个新的点文件中引入了单个图像作为节点,并添加了不可见的边。成功了:)如果你能投票支持我的答案,那就太好了,即使这不是一个解决方案。我喜欢这种努力,但一点奖励总是好的。。。