I'm actually trying to generate a component diagram with PlantUml
. Is it possible to define the relative position of the different components? What I want to define is: ComponentB is left from ComponentA. ComponentC is below ComponentA, ...
-
1Does this answer your question? [How to align blocks in PlantUML class diagrams?](https://stackoverflow.com/questions/11557426/how-to-align-blocks-in-plantuml-class-diagrams) – Fuhrmanator Nov 20 '20 at 15:19
2 Answers
A typical approach is to mark a line as hidden.
One thing to keep in mind is that hidden
is only supported for left-to-right ->
, and top-to-bottom -->
lines, so you need to place the left and right side accordingly (syntax X <[hidden]- Y
doesn't seem to be supported).
@startuml
class ComponentA
ComponentB -[hidden]> ComponentA
ComponentA -[hidden]-> ComponentC
@enduml
See also How to correct PlantUML Line Path for more positioning tips.

- 9,617
- 5
- 38
- 51
-
2>is only supported for left-to-right ->, and top-to-bottom --> lines TIL. That functionality isn't mentioned in the documentation! – Pod May 16 '18 at 14:00
-
@campisano has mentioned a link in above comment. Which has information on, using *together* keyword to group some classes together : the layout engine will try to group them (as if they were in the same package). – Divyarajsinh Jadeja Feb 28 '19 at 07:16
You can follow guidelines from here: Layout of grouping component
In general when you write connections like -> you just have to know that there is special notation for right arrow, left arrow, bottom arrow, top arrow: This has special meaning for plantUml:
-l->
-r->
-u->
-d->
It means to place arrow on the left or right or up or down if possible.
Lets imagine this diagram:
@startuml
node "My system" {
[A] -> [B]
[C] -> [B]
}
@enduml
This looks horrible, you can fix this by directing PlanUml with arrow directions.
@startuml
node "My system" {
[A] -d-> [B]
[C] -r-> [B]
}
@enduml
Will generate this:

- 1,495
- 11
- 12
-
2Why is this not the accepted answer this is perfect, unless you can't combine `[hidden]` and `-u|d|l|r->` – tgabb Feb 03 '22 at 18:08
-
2You can combine those. But it's finicky (as everything in organizing PlantUML states seems to be). `STATE0 -up[hidden]-> STATE1: TEST` does work but may be different with only one `-` as `STATE0 -up[hidden]> STATE1: TEST`. – mint branch conditioner Dec 03 '22 at 22:34
-