Graphviz 如何在一行中获取具有长标签的节点

Graphviz 如何在一行中获取具有长标签的节点,graphviz,dot,Graphviz,Dot,我是graphviz的新手,我正在尝试获取以下图形 但是,当我想要添加标签时,第一个集群内的布局将被破坏。 如果我更改约束,则第一个簇中的布局应该是一样的,但是从第一个簇到节点D的边会更改。下面是带有示例标签的图像 以下是带有标签的图形的代码,作为一个新手,我可能已经包含了一些冗余代码: digraph Name { graph [fontsize=10 fontname="Verdana" compound=true]; { rank=same; 0 [

我是graphviz的新手,我正在尝试获取以下图形

但是,当我想要添加标签时,第一个集群内的布局将被破坏。 如果我更改约束,则第一个簇中的布局应该是一样的,但是从第一个簇到节点D的边会更改。下面是带有示例标签的图像

以下是带有标签的图形的代码,作为一个新手,我可能已经包含了一些冗余代码:

    digraph Name { 
    graph [fontsize=10 fontname="Verdana" compound=true];
    { rank=same;
    0 [style=invis];
01 [style = invis]; 02 [style=invis]; 0-> 01 -> 02 [style=invis]; }

subgraph cluster1 { compound=true ; fontsize = 20; label = "ooooooooooo oooooooo"; A [label="aaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaa"]; {rank="same"; B [label="bbbbbbbbbb"]; C [label="cccccccccccc"]; 0; 01;} {rank="same"; edge [style=invis]; B1 [label="b1b1b1b1 b1\nb1b1b1b1b1b1b1b1b1"]; C1 [style=invis];} {rank="same"; edge [style=invis]; B2 [label="b2b2b2b2b2 b2b2b2\nb2b2b2b2b2"]; C2 [style=invis];} A->B ; 0->B [style=invis]; B->B1 [group=g1]; B1->B2 [group=g1]; A->C ; 01->C [group=g2 style=invis]; C->C1 [group=g2 style=invis]; C1->C2 [group=g2 style=invis]; style = "dashed"; } subgraph cluster2 { style=invis {rank=same; D [label="ddddddd dddd"]; D1 [label="d1d1d1"]; D2 [label="d2d2d2d2d2d"]; D3 [label="d3d3d3 d3d3d3d"]; 02;} 02 -> D [style=invis]; D -> D1; D1 -> D2; D2 -> D3; } // edges between clusters C -> D [ ltail=cluster1 constraint=false]; } </code></pre>

有向图名称{
图形[fontsize=10 fontname=“Verdana”component=true];
{rank=相同;
0[style=invi];
01[style=invi]; 02[style=invi]; 0->01->02[style=invi]; }

子图簇1{ 复合=真; fontsize=20; label=“oooooooooooooooooo”; A[label=“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; {rank=“相同”; B[label=“bbbbbbbb”]; C[label=“cccc”]; 0; 01;} {rank=“相同”; 边[style=invi]; B1[label=“B1B1B1 B1\NB1B1”]; C1[style=invi];} {rank=“相同”; 边[style=invi]; B2[label=“b2b2b2b2b2b2b2b2b2b2\nb2b2b2b2b2b2”]; C2[style=invi];} A->B; 0->B[style=invi]; B->B1[组=g1]; B1->B2[组=g1]; A->C; 01->C[组=g2样式=Invi]; C->C1[组=g2样式=Invi]; C1->C2[组=g2样式=Invi]; style=“虚线”; } 子图簇2{ 样式=Invi {rank=相同; D[label=“dddddddddd”]; D1[标签=“d1d1d1”]; D2[label=“D2D”]; D3[label=“D3 D3D”]; 02;} 02->D[style=invi]; D->D1; D1->D2; D2->D3; } //簇间边 C->D[ltail=cluster1 constraint=false]; }
使用

其中x是一个适合您的标签的数字

我曾经

node[ width = 3 ];
第17行和

node[ width = 2 ];
在代码的第45行上获取以下信息:

使用

其中x是一个适合您的标签的数字

我曾经

node[ width = 3 ];
第17行和

node[ width = 2 ];
在代码的第45行上获取以下信息:


非常感谢。虽然我真的不明白为什么从第一个子簇到第二个子簇的边的约束命令会更改第一个子簇内节点的对齐方式。然而,主要问题是它与您的解决方案配合使用!非常感谢你。虽然我真的不明白为什么从第一个子簇到第二个子簇的边的约束命令会更改第一个子簇内节点的对齐方式。然而,主要问题是它与您的解决方案配合使用!