How to increase the arrow head size in a Sequence Diagram?

0 votes
asked Feb 28, 2019 in Wanted features by ibey7804 (260 points)
edited Mar 1, 2019 by ibey7804

A Sequence Diagram that has many horizonal arrows will have very small default font sizes, when the diagram is fitted on a A4 sheet of paper.

So I normally have to increase all the individual font sizes.

But with the bigger fonts, the arrow head size will remain very small, making it hard to see them.

Is there a way to increase the arrow head size, when the text sizes are increased?

Here is an example:

'This produces an image with extremely small text sizes,
'especially when the diagram is fitted on an A4 landscape page.

@startuml

/'Skin/theme options available:
https://github.com/aklt/plantuml-syntax/blob/master/syntax/plantuml.vim#L117
'/

skinparam RoundCorner 25
skinparam SequenceLifeLineBorderColor Black
skinparam SequenceParticipantBorderColor Black
skinparam SequenceArrowThickness 3
skinparam padding 1
skinparam ParticipantPadding 30
hide footbox

/'The following parameters will increase all text sizes
But the arrow heads and lifelines become too small.'/
'skinparam Shadowing false
'skinparam SequenceTitleFontSize 28
'skinparam ParticipantFontSize 30
'skinparam ParticipantFontStyle Bold
'skinparam SequenceArrowFontSize 28
'skinparam NoteFontSize 28
'skinparam SequenceDividerFontSize 28
'skinparam SequenceGroupHeaderFontSize 28
'skinparam SequenceGroupFontSize 28


title
This is a long title
<size:20><color:gray>This is a long subtitle</color></size>

end title

participant ParticipantClass1 << (C,#8CEF92) >> order 1 #e5e5e5
participant ParticipantClass2 << (C,#8CEF92) >> order 2 #dcffdc
participant ParticipantClass3 << (C,#8CEF92) >> order 3 #ffe6e4
participant ParticipantClass4 << (C,#8CEF92) >> order 4 #dafffe

ParticipantClass1 -> ParticipantClass1: <b>text text text</b>
ParticipantClass1 -> ParticipantClass2: new ParticipantClass2()

== A section header text text text text text text ==

activate ParticipantClass2 #99FF99
ParticipantClass2 -> ParticipantClass2: <b>functionCallExample1()</b>
ParticipantClass2 -> ParticipantClass2: functionCallExample2()

note left
text text text text text text text text text text
text text text text text text text text text text.
end note

activate ParticipantClass2 #63C563
ParticipantClass2 -> ParticipantClass3: functionCallExample3()
ParticipantClass3 --> ParticipantClass2: return
deactivate ParticipantClass2

'alt is an "if" statement. See https://stackoverflow.com/questions/8114770/how-to-show-if-condition-on-a-sequence-diagram

alt functionCallExample2() = false
    ParticipantClass2 --> ParticipantClass1: return
else functionCallExample2() = true

    ParticipantClass2 -> ParticipantClass2: text text text text text text text text text text text text.
    ParticipantClass2 -> ParticipantClass2: text text text text text text   
    ParticipantClass2 -> ParticipantClass2: text text text text text text 

    note left
        text text text text text text
        text text text text text text
        text text text text text text
    end note

    activate ParticipantClass2 #63C563
    ParticipantClass2 -> ParticipantClass2: text text text text text text text text text \ntext text text text text text 
    ParticipantClass2 -> ParticipantClass2: text text text text text text text text text \ntext text text text text text 
    ParticipantClass2 -> ParticipantClass2: text text text text text text text text text \ntext text text text text text 
    ParticipantClass2 -> ParticipantClass2: text text text text text text text text text 
    ParticipantClass2 -> ParticipantClass2: text text text text text text text text text 
    deactivate ParticipantClass2

    ParticipantClass2 --> ParticipantClass1: return
    deactivate ParticipantClass2
end

'Add a blank line space
|||

== Another section header text text text text text text  ==

ParticipantClass1 -> ParticipantClass1: text text text text text text 
activate ParticipantClass1 #E0E0E0
ParticipantClass1 -> ParticipantClass1: text text text text text text 
ParticipantClass1 -> ParticipantClass4: new ParticipantClass4()
activate ParticipantClass4 #94FFFD
ParticipantClass4 -> ParticipantClass4: ParticipantClass4() constructor: \ntext text text text text text text text text 
ParticipantClass4 --> ParticipantClass1: return
deactivate ParticipantClass1

'Add a discontinuity in the life line
...

ParticipantClass4 -> ParticipantClass4: text text text text text text \ntext text text text text text 

note right
text text text text text text 
text text text text text text 
end note

ParticipantClass4 -> ParticipantClass2: text text text text text text text text text text text text 
ParticipantClass4 -> ParticipantClass2: text text text text text text text text text text text text 

note left
text text text text text text text text text text text text text text text text text text 
text text text text text text text text text text text text text text text text text text 
end note

ParticipantClass4 -> ParticipantClass2: text text text text text text text text text 
ParticipantClass4 -> ParticipantClass4: text text text text text text text text \ntext text text text text text 
deactivate ParticipantClass4

@enduml



Example diagram: http://www.plantuml.com/plantuml/uml/xLTTS-8s57s_l-BEya0oi-00pWSCOJPXG_kmqzbfzh4lmhgEDSYIAyaXwUJ7LpPiGekDlItfKmrn9jAvv-hS3qdfVak4nSnedaTaaIaKANiWN0kN83qvGod9PxGfanAT7q0h_Y3x4RfaCue4atvsdP12bn1omHuCIz5Jni8vugXLmNaJecIAsuXbX9ddxmDyieuPbwSI8EZUhuGAF4DAg3CdjBB87fcGR2bf0ebpcPq4mODVLBxiHpeDs4gw8FEa1KFFFYl7deAbrCiWPTQH2RP3to7zHv5slWm6bz0D0Antbx5YfR_gNF6vDeeC3izt9kxfzvnKH5z4x7yKtMh3oSorr0Pl9OjM5TYlNf28HEPTje7V6AFNFlxHIf6rEDg1P8npeHvmi3Esm_vrEpqwWqHmmbXhjzHF087FP_6db7fT04fBScIipwYKA5HaY5d2lwOJRdDN9f0LIyA46BV83A7JUfFxlWzRTqT2mlZ6Gyoa9UZkg_icdAI5LkxUUy3X5NGhfRmYl9O32FSi2M-rvD2j2MIDgr-qsrr5bVbdyIWucGRKJqRdsS_4MY9tCG2k20QKlUQ_3ANseTiCJgr7JOPdisbKLCl4Dz3px6z8cozBy3GeCRDfK1ZD04ZnBGraRn7RZTvSCci7E9tYoVnZvsf-jnWFJt4smx90SO0TEYy-1-s7jVP3xF0eZdbqq7vKQp_2JXpJ1OK7xSDQ-z3xPx6d0DWNtPljHsA2q-MihFpNrpHOpjfP3oUeQBq_V78AS7sDDsWfSaAhieF8bEprh-jh0ERnZynHHSWxu_5YCHx3_aprohokE5Ub_pcJykw9fPcamSbfeQyrImL5AKzfHoWfTh0LqFxrunRzih0BbuSZT36Qdr-CscaRLMeRUMrxIEnLnyQGouq2JlLh0kWowShMLVX1n1_GEWzCIRa-tXFXzxFC3qSh_KWcbdfT7cb-yx3bqHTS3GRXvULPaEXrp-cUBNwBk1TfnKM1wFalwzdjTjFRdhe0tdDD_l1wkr6ZVoh2LTqfMxta3UjvdSa9wdWhmzYS__h2EA8Zn2EIRIBmrYIuVGvP7H_rrZNed-REUR-q_QOEp__l-PYUtvdvu8RtJxQKPbPI7A1xmpaoN4gcLYY58hGPYmXUNbusvwtIBY7pOwUkFtRRtnKQWbChO82TkxFYSoHFxMZ2wkj9U79Qlz8GE-DmiLXyXlsPQXSLz1XfPPt98wVDfB4FchI53SLpe706hqN3XVMBSaBbmZsZsFn_AaLSl1H1lz-7jeh_PTjlxqv6F2HDLw6cwRVzlMBfnpvhyRznKdspFFBhFQdVEIb7gjBszNgelqA0Jrvldie_0G00
 

2 Answers

0 votes
answered Mar 1, 2019 by plantuml (295,000 points)
Could you post a simple example, so that we could talk about it ?

Maybe the scale command is the good option for what you want to do ( http://plantuml.com/commons )

It allows to scale the whole diagram rather that changing individually every setting.
commented Mar 1, 2019 by ibey7804 (260 points)
I have added an example image. Also the "scale" optino does not solve the problem.
0 votes
answered Mar 5, 2019 by zimchaa (1,040 points)

Hi - I think to follow up on @plantuml's answer, it is possible to use the scale to make the arrows bigger when compared to the text - the effect is achieved by actually reducing the text size (and reducing the padding, etc.). A balance between text size and arrow size could be achieved with some more tweaking.

- Bigger arrows = Scale value up

- Appropriate fit into A4 sheet = less padding, smaller text size.

Scale 2 - bigger arrows, smaller text

commented Mar 6, 2019 by ibey7804 (260 points)
Thanks for the suggestion. It's useful. I tried this with various text sizes, but I still usually end up with text that is too small. There is an improvement when reducing the "skinparam SequenceArrowThickness" value, which makes the lines thinner. I'm hoping that an arrow head option will be added in a future release.
...