Как создать легенду с цветами в PlantUML?

Я хочу раскрасить классы на моей диаграмме классов на основе определенных критериев, а затем отобразить легенду, которая будет выглядеть примерно так:

Легенда с цветами

Если бы я мог добавить таблицу HTML в legend и endlegend PlantUML, я мог бы добиться этого, изменив фон ячеек. Однако добавление HTML <table> не работает. Я также пытался использовать PlantUML salt для вставки таблицы, но не смог найти способ раскрасить ячейки таблицы.

Есть ли способ добиться этого?


person Masked Man    schedule 23.06.2015    source источник


Ответы (3)


Это не идеально, но вы можете использовать креольский стол. (см. 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

Изображение, показывающее легенду.

Есть некоторые артефакты рисования, но это то, что вы ожидаете?

С форума растений. Где они разрешили скопировать этот ответ здесь.

Да, пожалуйста, скопируйте/вставьте наш ответ в StackOverflow: это действительно было бы полезно

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

person nfec    schedule 20.10.2015

Я попробовал решение nfec, и оно у меня не сработало, но оно помогло мне найти решение, которое действительно сработало. Вот что я получил:

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

Вот как это выглядит:

Таблица цветов легенды

person AmaDaden    schedule 27.05.2017
comment
Это сработало для меня намного лучше, чем принятый ответ. Кроме того, стоит упомянуть, что вы можете использовать имена цветов вместо шестнадцатеричных значений (как показано на: github.com /qywx/PlantUML-цвета) - person Maor; 25.01.2021

Кажется, нет прямого способа включить легенду с цветовой кодировкой в ​​диаграмму PlantUML, но я нашел обходной путь, который достаточно близок.

  • Объявите классы TypeA, TypeB, TypeC внутри пакета LEGEND.
  • Скройте круг, методы и элементы для каждого класса.
  • Прикрепите «скрытые» коннекторы между классами.


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

В результате получаются следующие диаграммы. Ни один из них не идеален, но лучше, чем рисовать легенду отдельно в графическом редакторе. :-) Я надеюсь, что PlantUML предложит прямую поддержку для этого в будущем выпуске.

Легенда по вертикалиЛегенда по горизонтали

person Masked Man    schedule 30.06.2015
comment
Вы можете спросить об этом в разделе вопросов и ответов на сайте plantuml. - person Fuhrmanator; 05.07.2015
comment
@Fuhrmanator Да, ты прав. Я понял это позже. Я сделал, и получил лучший ответ там. plantuml.sourceforge .net/qa/?qa=3596/ Я также попросил их опубликовать здесь свой ответ. - person Masked Man; 05.07.2015