点格式UML状态图中的子状态
我试图使用点格式生成一个基本的UML状态图。这是我目前的档案:点格式UML状态图中的子状态,uml,dot,Uml,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"
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" ];
}
通过运行它,它看起来很像我想要的,除了我不知道如何使超级国家D有圆角,水平线和出入境条件,就像州A一样
有没有办法将这些东西添加到点子图中
p、 s.Graphviz说:“但是当我尝试这个方法时,大多数引擎都给了我一个非常糟糕的图表,其中过渡箭头甚至没有接近状态,这就是为什么我要使用“过时的”基于记录的形状而不是HTML。子图可以具有style=rounded属性,所以我想这就是你想要的 (还添加了html标签作为奖励):
有向图{
复合=真;
节点[shape=Mrecord]
rankdir=“LR”
子图簇0{
label=“D”
样式=四舍五入
B[label=“B”]
C[label=“C”]
}
A[标签=
边距=0形状=无]
A->B[style=“solid”label=“X”];
A->C[style=“solid”label=“X”];
}
Graphviz使用图或子图中的边和节点。你已经制作了一个A节点,以及B和C。我认为这些不能被转换成D中的某种标签。你可以像A一样格式化D,让B和C在D中不可见。这将使渲染与意义tho分离。我无法想象一个干净的解决方案。这并不能回答您的问题,但可能会很有用:在做UML图时,我一直在使用“plantuml”。它使用点作为后端,并且更容易获得更好的结果。你想把D作为一个状态吗?是吗?
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"];
}