如何在 PlantUML 中生成带有颜色的图例?

How to generate a legend with colors in PlantUML?

我想根据特定标准在我的 class 图表中为 classes 着色,然后显示图例,大致如下所示:

如果我可以在 PlantUML 的 legendendlegend 中添加 HTML table,我可以通过更改单元格背景来实现。但是,添加 HTML <table> 不起作用。我还尝试使用 PlantUML's salt 插入 table,但我找不到任何方法来为 table 的单元格着色。

有什么办法可以实现吗?

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

  • 在包 LEGEND.
  • 中声明 classes TypeATypeBTypeC
  • 隐藏每个 class 的圈子、方法和成员。
  • 在 class 之间附加 "hidden" 连接器。


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
}

或者,"hidden" 连接器可以替换为 -r-,如下所示:

TypeA -r- TypeB
TypeB -r- TypeC

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

这并不完美,但您可以使用克里奥尔语 table。 (看 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

有一些绘图瑕疵,但是否如您所愿?

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

Yes, please copy/paste our answer to Whosebug : it would indeed by helpful

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

我已经尝试过 nfec 的解决方案,但它对我不起作用,但它让我开始寻找一个确实有效的解决方案。这是我得到的:

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

这是它的样子: