如何更正 PlantUML 线路径
How to correct PlantUML Line Path
我使用以下代码创建了这个图表。但是正如您所看到的,从 (Cancel Order) 和 (Place Order) 到 (Publisher) 的行决定采用非常圆的路径来获取它们,而不是直接向右然后向下到发布者。我尝试使用手动方向命令,如“-down”,但其中 none 似乎有帮助。有人知道如何解决这个问题吗?
这是我的代码。我感谢任何帮助。谢谢。
@startUML EBook Use Case Diagram
left to right direction
Actor Customer as customer
Actor EBook as ebook
Actor Publisher as publisher
rectangle "Book Catalogue" {
together {
Actor "Book Database" as bookLog
(Retrieve Information) as getBook
customer -- getBook
getBook -- ebook
getBook -- bookLog
(Update Catalogue) as updateCatalogue
ebook -- updateCatalogue
updateCatalogue -- bookLog
}
together {
(Place Order) as order
customer -- order
order -- ebook
order--publisher
(Cancel Order) as cancelOrder
customer -- cancelOrder
cancelOrder -- ebook
cancelOrder--publisher
}
}
(Ship To EBook) as shipEBook
shipEBook -- publisher
(Ship To Customer) as shipCustomer
customer -- shipCustomer
ebook -- shipEBook
shipCustomer -- ebook
(Return to EBook) as returnCustomer
(Returnto Publisher) as returnPublisher
customer -- returnCustomer
returnCustomer -- ebook
ebook -- returnPublisher
returnPublisher -- publisher
@endUML
下面列出了一些您可以尝试的技巧。布局本身由 GraphViz(点布局 iirc)执行,而 GraphViz 有时只是这样做。图布局是一个 NP 完全问题,因此算法通常会走苛刻的捷径。
我见过或使用过的典型解决方法包括:
- 添加隐藏线
a -[hidden]- b
- 延长一行的长度
a --- b
(更多破折号,更长的行)
- 指定线条的首选方向(
a -left- b
)
- 交换协会结束(
a -- b
→ b -- a
)
- 更改定义的顺序(顺序确实很重要...有时)
- 添加 background/border 颜色设置为透明的空节点
所以如果你真的想要一个漂亮的布局,你需要付出一些努力,但请记住,布局仍然很脆弱——如果你 add/remove 项目,你可能需要重做。
如果有人想知道更具体的,可能会给出更无用的答案,这就是我最后所做的。
order -down- publisher
publisher -[hidden]up- order
所以出于某种原因添加重复的命令可以解决问题。
尝试@Peter Uhnak 建议的选项以及线型:
skinparam linetype polyline
skinparam linetype ortho
为台词提供更好的选择。
使用正交 - (Here)
你会得到-
要使连接在布局中不那么重要,请使用 [norank]
,例如 a -[norank]-> b
所有这些好的答案都在半官方Hitchhiker’s Guide to PlantUML. See the Layout section中编译和引用。
不确定 3 年前情况如何,但现在它可能是比 SO 更好的 PlantUML 调整起点。
我使用以下代码创建了这个图表。但是正如您所看到的,从 (Cancel Order) 和 (Place Order) 到 (Publisher) 的行决定采用非常圆的路径来获取它们,而不是直接向右然后向下到发布者。我尝试使用手动方向命令,如“-down”,但其中 none 似乎有帮助。有人知道如何解决这个问题吗?
这是我的代码。我感谢任何帮助。谢谢。
@startUML EBook Use Case Diagram
left to right direction
Actor Customer as customer
Actor EBook as ebook
Actor Publisher as publisher
rectangle "Book Catalogue" {
together {
Actor "Book Database" as bookLog
(Retrieve Information) as getBook
customer -- getBook
getBook -- ebook
getBook -- bookLog
(Update Catalogue) as updateCatalogue
ebook -- updateCatalogue
updateCatalogue -- bookLog
}
together {
(Place Order) as order
customer -- order
order -- ebook
order--publisher
(Cancel Order) as cancelOrder
customer -- cancelOrder
cancelOrder -- ebook
cancelOrder--publisher
}
}
(Ship To EBook) as shipEBook
shipEBook -- publisher
(Ship To Customer) as shipCustomer
customer -- shipCustomer
ebook -- shipEBook
shipCustomer -- ebook
(Return to EBook) as returnCustomer
(Returnto Publisher) as returnPublisher
customer -- returnCustomer
returnCustomer -- ebook
ebook -- returnPublisher
returnPublisher -- publisher
@endUML
下面列出了一些您可以尝试的技巧。布局本身由 GraphViz(点布局 iirc)执行,而 GraphViz 有时只是这样做。图布局是一个 NP 完全问题,因此算法通常会走苛刻的捷径。
我见过或使用过的典型解决方法包括:
- 添加隐藏线
a -[hidden]- b
- 延长一行的长度
a --- b
(更多破折号,更长的行) - 指定线条的首选方向(
a -left- b
) - 交换协会结束(
a -- b
→b -- a
) - 更改定义的顺序(顺序确实很重要...有时)
- 添加 background/border 颜色设置为透明的空节点
所以如果你真的想要一个漂亮的布局,你需要付出一些努力,但请记住,布局仍然很脆弱——如果你 add/remove 项目,你可能需要重做。
如果有人想知道更具体的,可能会给出更无用的答案,这就是我最后所做的。
order -down- publisher
publisher -[hidden]up- order
所以出于某种原因添加重复的命令可以解决问题。
尝试@Peter Uhnak 建议的选项以及线型:
skinparam linetype polyline
skinparam linetype ortho
为台词提供更好的选择。 使用正交 - (Here)
你会得到-
要使连接在布局中不那么重要,请使用 [norank]
,例如 a -[norank]-> b
所有这些好的答案都在半官方Hitchhiker’s Guide to PlantUML. See the Layout section中编译和引用。
不确定 3 年前情况如何,但现在它可能是比 SO 更好的 PlantUML 调整起点。