PlantUML:控制箭头形状和方向
PlantUML: control arrow shape and direction
我用 PlantUML 为我的文档创建了一个小状态图:
@startuml
state Powered {
[*] -d-> Starting
Powered -r-> Starting : Some error
Starting -d-> Operational
}
[*] -d-> Powered : Power On
Powered -u-> [*] : Power Off
Powered -d-> Powered : Reset
@enduml
(顺便说一句:PlantUML 是一个非常 的好工具,可以从嵌入的嵌入标记文档(如 asciidoc 或 reStructuredText)中创建图形输出)
这是给定状态图呈现的内容:
正如你所见,图表绘制得有点草率
- "Power Off" 过渡箭头不直
- Initial/End 状态交换
- 从 "Powered" 到 "Starting" 的箭头看起来与 "Power Off" 转换
有某种联系
- "Starting"和"Operational"状态不对齐
正如 documentation 描述的那样 通过写 -left->
或 -l->
而不只是 -->
.
有没有办法影响 how 和 where 箭头的绘制方式?我真的很想只绘制 水平 或 垂直 直线 线。
PlantUML 并未设计为在施加多个方向时提供漂亮的直箭头。使用默认布局为我提供了最清晰和最易读的结果。
这是一个具有相同含义但没有布局问题的示例:
@startuml
state Powered {
[*] --> Starting
Starting --> Operational
}
[*] --> Powered : Power On
Powered --> [*] : Power Off
Powered --> Powered : Reset
Powered --> Powered : Fatal Error
@enduml
编辑:我还将您的 Powered --> Starting : Fatal Error
转换更改为:Powered --> Powered : Fatal Error
,这更好地表达了从 Powered 内的任何状态,致命错误事件将在 Starting 子状态重新启动。
或者两个语句:
Powered --> Powered : Reset
Powered --> Powered : Fatal Error
可以合并到:
Powered --> Powered : Reset, Fatal Error
参见 OMG UML 2.5 format specification 第 329 页第 14.2.4.9 节
[<trigger> [‘,’ <trigger>]* [‘[‘ <guard>’]’] [‘/’ <behavior-expression>]]
为未来的读者回答原始问题:
为了只绘制水平或垂直直线,可以使用skinparam linetype ortho
。
为了让所有的线都笔直(但不一定是水平或垂直的)你可以使用skinparam linetype polyline
。
(source)
我用 PlantUML 为我的文档创建了一个小状态图:
@startuml
state Powered {
[*] -d-> Starting
Powered -r-> Starting : Some error
Starting -d-> Operational
}
[*] -d-> Powered : Power On
Powered -u-> [*] : Power Off
Powered -d-> Powered : Reset
@enduml
(顺便说一句:PlantUML 是一个非常 的好工具,可以从嵌入的嵌入标记文档(如 asciidoc 或 reStructuredText)中创建图形输出)
这是给定状态图呈现的内容:
正如你所见,图表绘制得有点草率
- "Power Off" 过渡箭头不直
- Initial/End 状态交换
- 从 "Powered" 到 "Starting" 的箭头看起来与 "Power Off" 转换 有某种联系
- "Starting"和"Operational"状态不对齐
正如 documentation 描述的那样 通过写 -left->
或 -l->
而不只是 -->
.
有没有办法影响 how 和 where 箭头的绘制方式?我真的很想只绘制 水平 或 垂直 直线 线。
PlantUML 并未设计为在施加多个方向时提供漂亮的直箭头。使用默认布局为我提供了最清晰和最易读的结果。
这是一个具有相同含义但没有布局问题的示例:
@startuml
state Powered {
[*] --> Starting
Starting --> Operational
}
[*] --> Powered : Power On
Powered --> [*] : Power Off
Powered --> Powered : Reset
Powered --> Powered : Fatal Error
@enduml
编辑:我还将您的 Powered --> Starting : Fatal Error
转换更改为:Powered --> Powered : Fatal Error
,这更好地表达了从 Powered 内的任何状态,致命错误事件将在 Starting 子状态重新启动。
或者两个语句:
Powered --> Powered : Reset
Powered --> Powered : Fatal Error
可以合并到:
Powered --> Powered : Reset, Fatal Error
参见 OMG UML 2.5 format specification 第 329 页第 14.2.4.9 节
[<trigger> [‘,’ <trigger>]* [‘[‘ <guard>’]’] [‘/’ <behavior-expression>]]
为未来的读者回答原始问题:
为了只绘制水平或垂直直线,可以使用skinparam linetype ortho
。
为了让所有的线都笔直(但不一定是水平或垂直的)你可以使用skinparam linetype polyline
。
(source)