我想基于某个特定标准在类图中给类着色,并显示一个类似以下的图例:
如果我能在PlantUML的legend
和endlegend
标签内添加HTML表格,我可以通过更改单元格背景来实现这一点。但是,添加HTML <table>
无法生效。我还尝试使用PlantUML的salt
插入表格,但我找不到任何方法来对表格单元格进行着色。
有没有办法实现这个需求呢?
我想基于某个特定标准在类图中给类着色,并显示一个类似以下的图例:
如果我能在PlantUML的legend
和endlegend
标签内添加HTML表格,我可以通过更改单元格背景来实现这一点。但是,添加HTML <table>
无法生效。我还尝试使用PlantUML的salt
插入表格,但我找不到任何方法来对表格单元格进行着色。
有没有办法实现这个需求呢?
这并不完美,但你可以使用一张Creole表格。(参见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论坛。他们允许在此处复制此答案。
是的,请将我们的回答复制/粘贴到StackOverflow:这确实会有所帮助。
http://plantuml.sourceforge.net/qa/?qa=3596/how-to-generate-a-legend-with-colors-in-plantuml
在其他答案的基础上构建一个图例,使其与原始请求相匹配:
' set legend to have a white background
skinparam legendBackgroundColor #FFFFFF
' remove box around legend
skinparam legendBorderColor #FFFFFF
' remove the lines between the legend items
skinparam legendEntrySeparator #FFFFFF
legend right
' the <#FFFFFF,#FFFFFF> sets the background color of the legend to white
<#FFFFFF,#FFFFFF>|<#red>| Type A Classes|
' the space between the | and <#blue> is important to make the color column wider
|<#blue> | Type B Classes|
|<#green>| Type C Classes|
endlegend
在PlantUML图表中,似乎没有直接包含彩色图例的方法,但我找到了一个足够接近的解决方案。
LEGEND
包内声明类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
}
-r-
替换“隐藏”的连接器,如下所示:TypeA -r- TypeB
TypeB -r- TypeC
|类型|
/|<#浅黄色>未更改|
/|<#浅粉色>已替换|
/endlegend
- patricksurry