我正在尝试使用 DOT 格式生成基本的 UML 状态图。这是我目前的文件:
digraph {
compound=true;
node [shape=Mrecord]
rankdir="LR"
subgraph cluster0
{
label = "D"
B [label = "B"]
C [label = "C"]
}
A [label = "A|entry / EnterA\nexit / ExitA"]
A -> B [ style="solid",label="X" ];
A -> C [ style="solid",label="X" ];
}
通过 Erdos graphing engine 运行它,它看起来很像我想要的,只是我不知道如何使 super 状态 D 具有圆角和水平线以及进入/退出条件,就像状态 A 那样。
有没有办法将这些东西添加到 DOT 子图中?
附: Graphviz 说“The record-based shape has largely been superseded and greatly generalized by HTML-like labels”,但是当我尝试这个时,大多数引擎给了我一个非常糟糕的图表,其中转换箭头甚至没有接近接触状态,这就是为什么我正在做“过时的”记录 -基于形状而不是 HTML。
最佳答案
子图可以具有 style=rounded 属性,所以我想这就是你想要的 (还添加了 html 标签作为奖励):
digraph {
compound=true;
node [shape=Mrecord]
rankdir="LR"
subgraph cluster0 {
label = "D"
style = rounded
B [label = "B"]
C [label = "C"]
}
A [label = <<table cellborder="0" style="rounded">
<tr><td>A</td></tr>
<hr/>
<tr><td>entry / EnterA<br/>exit / ExitA</td></tr>
</table>>
margin=0 shape=none]
A -> B [style="solid" label="X"];
A -> C [style="solid" label="X"];
}
关于uml - DOT 格式的 UML 状态图中的子状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44080133/