I want to color classes in my class diagram, based on a certain criteria, and then display a legend, that would look roughly like:
If I could add an HTML table within PlantUML's legend
and endlegend
, I could achieve this by changing the cell backgrounds. However, adding the HTML <table>
doesn't work. I also tried using PlantUML's salt
to insert a table, but I couldn't find any way to color the cells of the table.
Is there any way to achieve this?
This is not perfect, but you can use a creole table. (see
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
There are some drawing artifacts, but is it what you are expecting ?
From the plantuml forum. Where they allowed to copy this answer here.
Yes, please copy/paste our answer to StackOverflow : it would indeed by helpful
http://plantuml.sourceforge.net/qa/?qa=3596/how-to-generate-a-legend-with-colors-in-plantuml
I've tried nfec's solution and it was not working for me, but it started me off on a solution that did work. Here is what I got.
legend right
|Color| Type |
|<#FF0000>| Type A class|
|<#00FF00>| Type B class|
|<#0000FF>| Type C class|
endlegend
There doesn't appear to be a direct way of including a color-coded legend in a PlantUML diagram, but I figured out a workaround which is close enough.
- Declare classes
TypeA
, TypeB
, TypeC
inside a package LEGEND
.
- Hide the circle, methods and members for each class.
- Attach "hidden" connectors between the classes.
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
}
Alternatively, the "hidden" connectors could be replaced with -r-
, like so:
TypeA -r- TypeB
TypeB -r- TypeC
These produces the following diagrams. Neither one is perfect, but better than drawing the legend separately in image editor. :-) I do hope PlantUML offers direct support for this in a future release.