如何在 PlantUML 中生成带有颜色的图例?
How to generate a legend with colors in PlantUML?
我想根据特定标准在我的 class 图表中为 classes 着色,然后显示图例,大致如下所示:
如果我可以在 PlantUML 的 legend
和 endlegend
中添加 HTML table,我可以通过更改单元格背景来实现。但是,添加 HTML <table>
不起作用。我还尝试使用 PlantUML's salt
插入 table,但我找不到任何方法来为 table 的单元格着色。
有什么办法可以实现吗?
似乎没有在 PlantUML 图表中包含颜色编码图例的直接方法,但我想出了一个足够接近的解决方法。
- 在包
LEGEND
. 中声明 classes TypeA
、TypeB
、TypeC
- 隐藏每个 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
这是它的样子:
我想根据特定标准在我的 class 图表中为 classes 着色,然后显示图例,大致如下所示:
如果我可以在 PlantUML 的 legend
和 endlegend
中添加 HTML table,我可以通过更改单元格背景来实现。但是,添加 HTML <table>
不起作用。我还尝试使用 PlantUML's salt
插入 table,但我找不到任何方法来为 table 的单元格着色。
有什么办法可以实现吗?
似乎没有在 PlantUML 图表中包含颜色编码图例的直接方法,但我想出了一个足够接近的解决方法。
- 在包
LEGEND
. 中声明 classes - 隐藏每个 class 的圈子、方法和成员。
- 在 class 之间附加 "hidden" 连接器。
TypeA
、TypeB
、TypeC
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
这是它的样子: