How to generate a legend with colors in PlantUML?
Solution 1
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
Solution 2
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
This is how it looks like:
Solution 3
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 packageLEGEND
. - 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.
![Masked Man](https://i.stack.imgur.com/yjo7W.jpg?s=256&g=1)
Masked Man
Minato-sensei ... this place ... this world ... I don't care about it anymore.
Updated on June 05, 2022Comments
-
Masked Man about 2 years
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
andendlegend
, I could achieve this by changing the cell backgrounds. However, adding the HTML<table>
doesn't work. I also tried using PlantUML'ssalt
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?