29

我想根据特定标准为类图中的类着色,然后显示一个图例,大致如下所示:

有颜色的传说

如果我可以在 PlantUMLlegend和中添加一个 HTML 表格endlegend,我可以通过更改单元格背景来实现这一点。但是,添加 HTML<table>不起作用。我还尝试使用PlantUMLsalt插入表格,但我找不到任何方法来为表格的单元格着色。

有什么办法可以做到这一点?

4

3 回答 3

32

我已经尝试过 nfec 的解决方案,但它对我不起作用,但它让我开始使用一个可行的解决方案。这是我得到的:

legend right
    |Color| Type |
    |<#FF0000>| Type A class|
    |<#00FF00>| Type B class|
    |<#0000FF>| Type C class|
endlegend

这是它的样子:

图例颜色表

于 2017-05-27T14:18:56.857 回答
23

这并不完美,但您可以使用克里奥尔语表。(见 http://plantuml.sourceforge.net/creole.html

@startuml class foo

 legend
 |= |= Type |
 |<back:#FF0000>   </back>| Type A class |
 |<back:#00FF00>   </back>| Type B class |
 |<back:blue>   </back>| Type C class |
 endlegend

@enduml

显示图例的图像。

有一些绘图工件,但这是您所期望的吗?

来自植物论坛。他们允许在此处复制此答案的地方。

是的,请复制/粘贴我们对 StackOverflow 的回答:这确实很有帮助

http://plantuml.sourceforge.net/qa/?qa=3596/how-to-generate-a-legend-with-colors-in-plantuml

于 2015-10-20T11:11:19.950 回答
2

似乎没有直接的方法在 PlantUML 图中包含颜色编码的图例,但我想出了一个足够接近的解决方法。

  • 在包中声明类TypeA, 。TypeBTypeCLEGEND
  • 隐藏每个类的圈子、方法和成员。
  • 在类之间附加“隐藏”连接器。


package LEGEND <<Rect>> { ' Draw the LEGEND "package" as a rectangular box.
class TypeA as "Type A Class" #LightRed
hide  TypeA circle
hide  TypeA methods
hide  TypeA members

class TypeB as "Type B Class" #LightBlue
hide  TypeB circle
hide  TypeB methods
hide  TypeB members

class TypeC as "Type C Class" #LightGreen
hide  TypeC circle
hide  TypeC methods
hide  TypeC members

' Workaround to prevent PlantUML from positioning the legend blocks randomly.
TypeA -[hidden]- TypeB
TypeB -[hidden]- TypeC
}

或者,可以将“隐藏”连接器替换为-r-,如下所示:

TypeA -r- TypeB
TypeB -r- TypeC

这些产生以下图表。两者都不是完美的,但比在图像编辑器中单独绘制图例要好。:-) 我确实希望 PlantUML 在未来的版本中提供对此的直接支持。

图例垂直 图例水平

于 2015-06-30T06:21:23.413 回答