如何修改此图表?

时间:2017-04-11 20:00:03

标签: graphviz

我写了这段代码:

digraph G {

    A254 -> A10[style=invis];
    A10 -> A9[style=invis];
    A9 -> A8[style=invis];
    A8 -> A7[style=invis];
    A7 -> A6[style=invis];
    A6 -> A5[style=invis];
    A5 -> A4[style=invis];
    A4 -> A3[style=invis];
    A3 -> A2[style=invis];
    A2 -> A1[style=invis];

    A254 -> A8 [label="t"];

    A8 -> A10 [label="t", style=dotted];
    A8 -> A9 [label="t", style=dotted];
    A8 -> A7 [label="t", style=dotted];
    A8 -> A6 [label="t", style=dotted];


    A8 -> A3 [constraint = false, label="t"];

    A3 -> A5 [label="t", style=dotted];
    A3 -> A4 [label="t", style=dotted];
    A3 -> A2 [label="t", style=dotted];
    A3 -> A1 [label="t", style=dotted];


    A254[style=filled]
    A3[style=filled]
    A8[style=filled]
    {rank=same; A254,A10,A9,A8,A7,A6,A5,A4,A3,A2,A1}
}

它生成以下图表: enter image description here

其实我有三个问题:

1.如何制作边缘A8 - > A3整洁?看起来很糟糕。

2.如何制作边缘A254 - > A8 + A8 - > A3矩形?

3.如何将此图表垂直化?

编辑:

节点必须按照上图所示的顺序排列。

2 个答案:

答案 0 :(得分:0)

enter image description here

是从

生成的
digraph G {

    A254 -> A10[style=invis];
    A10 -> A9[style=invis];
    A9 -> A8[style=invis];
    A8 -> A7[style=invis];
    A7 -> A6[style=invis];
    A6 -> A5[style=invis];
    A5 -> A4[style=invis];
    A4 -> A3[style=invis];
    A3 -> A2[style=invis];
    A2 -> A1[style=invis];

    A254 -> A8 [label="t"];

    A8 -> A10 [label="t", style=dotted];
    A8 -> A9 [label="t", style=dotted];
    A8 -> A7 [label="t", style=dotted];
    A8 -> A6 [label="t", style=dotted];


    A8 -> A3 [label="t"];

    A3 -> A5 [label="t", style=dotted];
    A3 -> A4 [label="t", style=dotted];
    A3 -> A2 [label="t", style=dotted];
    A3 -> A1 [label="t", style=dotted];


    A254[style=filled]
    A3[style=filled]
    A8[style=filled]
    {rank=same; A254,A8,A3}
}

最好的办法是阅读documentation并尝试其中的想法

答案 1 :(得分:0)

我找到了解决方案,这里是

  1. 您可以通过适当调整节点之间的距离和节点的大小来使边缘更整洁。最重要的是通过设置相应边缘的var x : integer; var fileCount : integer; var fileNames : TArray<string>; begin zipFile := TZipFile.Create; try filename := 'C:\test\57f52480-ec87-4169-a820-0a65bc4ad952.zip'; if zipFile.IsValid(filename) then begin zipFile.Open(filename, zmRead); fileCount := zipFile.FileCount; fileNames := copy(zipFile.FileNames, 0, MaxInt); zipFile.Close; for x := 0 to fileCount-1 do begin // Use David Heffernan's stream procedure ExtractToFile(filename, x, 'C:\test\' + fileNames[x]); end; end; finally zipFile.Free; end; end; 属性来强制A8-> A3边缘更长。
  2. 以下代码

    minlen

    生成以下图表:

    enter image description here

    1. 边缘不能是矩形。
    2. 您可以使用命令digraph G { nodesep=0.5 node[fixedsize=true, shape="circle", width=0.5] A254 -> A10[style=invis]; A10 -> A9[style=invis]; A9 -> A8[style=invis]; A8 -> A7[style=invis]; A7 -> A6[style=invis]; A6 -> A5[style=invis]; A5 -> A4[style=invis]; A4 -> A3[style=invis]; A3 -> A2[style=invis]; A2 -> A1[style=invis]; A254 -> A8 [label="t"]; A8 -> A10 [label="t", style=dotted]; A8 -> A9 [label="t", style=dotted]; A8 -> A7 [label="t", style=dotted]; A8 -> A6 [label="t", style=dotted]; A8 -> A3 [minlen = 3, constraint = false, label="t"]; A3 -> A5 [label="t", style=dotted]; A3 -> A4 [label="t", style=dotted]; A3 -> A2 [label="t", style=dotted]; A3 -> A1 [label="t", style=dotted]; A254[style=filled] A3[style=filled] A8[style=filled] {rank=same; A254,A10,A9,A8,A7,A6,A5,A4,A3,A2,A1} }
    3. 使图表垂直