Graphviz的从上到下,从左到右(Graphviz top to bottom AND left

2019-08-17 00:40发布

您好我想和点语言UML序列图,现在我有以下问题,我希望有布​​局的a,b,c和d在顶部的直线,而是直去的线条如下底部。 我怎样才能做到这一点?

a   b   c   d
|   |   |   | 
|   |   |   |

也许我可以实现的是,A,B,c和d与它属于边缘是簇其中I设定簇不同rankdir?

编辑只是发现A,B,c和d,但任何其他解决方案的加入不可见边的解决方案?

Answer 1:

你描述的似乎是什么dot (默认设置)。

例如,该曲线图:

digraph SO {
  a -> a1 -> a2
  b -> b1 -> b2
  c -> c1 -> c2
  d -> d1 -> d2
} 

出来是这样的:

如果你有一个更复杂的图形,你可以强制节点是在使用相同的高度rank=same 。 例如:

digraph SO {
  { rank = same
    a b c d
  }

  a -> a1 -> a2 
  b -> b1 -> b2 -> b3 -> b4
  c -> c1 
  d -> d1 -> d2 -> d3
  d2 -> a2
}

出来是这样的:

但是,如果你想要abcd是在一个特定的顺序,我认为你将有你这样建议使用不可见边。 该dot引路的建议是:

边权也发挥了作用,当节点被限制在同一级别。 与这些节点之间的非零权重的边缘旨在横跨秩在samedirection(左到右,或顶部至底部旋转的图中)尽可能。 这个事实可以被利用通过将不可见的边缘(以调节节点排序style="invis"在需要的地方)。



Answer 2:

你可以尝试mscgen(消息序列图生成器)

一个简单的示意图。将example.msc

msc {

A,B;

--- [label="Start", ID="1"];

A->B [label="signal"];
A<-B [label="signal"];

}

$:mscgen -T PNG -o example.png -i example.msc。

那是产生很好的序列图。

谢谢,SRIKANTH Kyatham



Answer 3:

建议#1 - PlantUml

PlantUML使用Graphviz的,这样一个选择是简单地使用PlantUML。 例如,在PlantUML这...

@startuml
Bob -> Alice : hello
@enduml

...呈现为这个...

上图是在渲染的http://plantuml.com/plantuml / ... ,你可以在PlantUML序列图阅读起来的文档中 。 此外,PlantUML也可以从使用命令行 ,并PlantUML 插件可用于许多流行的IDE 。

建议#2 - NEATO

您还可以使用的Graphviz & NEATO (PDF)。 例如,这有向图...

digraph sequenceDiagramExample {
  bobHead [ label="Bob" pos="0,1.5!" shape="record" ];
  bobPoint0 [ pos="0,0.75!" shape="point" width="0" ]
  bobFoot [ label="Bob" pos="0,0!" shape="record" ];
  aliceHead [ label="Alice" pos="1,1.5!" shape="record" ];
  alicePoint0 [ pos="1,0.75!" shape="point" width="0" ]
  aliceFoot [ label="Alice" pos="1,0!" shape="record" ];
  bobHead -> bobPoint0 -> bobFoot [ dir="none" style="dashed" ]
  aliceHead -> alicePoint0 -> aliceFoot [ dir="none" style="dashed" ]
  bobPoint0 -> alicePoint0 [ label="hello" labelloc="c" style="solid" ]
}

并通过NEATO渲染它(这是安装了Graphviz的)命令行...

...呈现为这个...

要使用NEATO渲染上面的图片,你如下:

  1. 安装NEATO,其自带的Graphviz(至少当使用在Mac上做$ brew install graphviz # requires Homebrew
  2. 放置digraph sequenceDiagramExample {...}代码从上面叫一个文本文件sequenceDiagramExample.dot
  3. 在命令行中运行$ neato -Tpng sequenceDiagramExample.dot -o sequenceDiagramExample.png ,这将生成一个名为PNG文件sequenceDiagramExample.png
  4. 查看PNG :)

Pro尖端-不要混淆neatodot的可执行文件

  • neato可能是你想要当你想在元素是如何定位的精细控制使用什么(欢迎评论交替观点!)
  • 不要混淆渲染neato对与呈现dot (也包含Graphviz的)
  • 例如,使用从建议#2呈现向图dot (如$ dot -Tpng sequenceDiagramExample.dot -o sequenceDiagramExample.png )会产生这样...



文章来源: Graphviz top to bottom AND left to right