Diagramme de Gantt

Le Gantt doit être décrit en anglais, à l'aide de phrase très simple (sujet-verbe-complément).

Définir des tâches (avec les verbes : last, start, end)

Les tâches sont définies à l'aide des crochets.

Durée

Leur durée est définie à l'aide du verbe last.

@startuml
[Design du prototype] lasts 15 days
[Test du prototype] lasts 10 days
@enduml

Début

Leur début est définie à l'aide du verbe start.

@startuml
[Design du prototype] lasts 15 days
[Test du prototype] lasts 10 days

Project starts 2020-07-01
[Design du prototype] starts 2020-07-01
[Test du prototype] starts 2020-07-16

@enduml

Fin

Leur fin est définie à l'aide du verbe end.

@startuml
[Design du prototype] lasts 15 days
[Test du prototype] lasts 10 days

Project starts 2020-07-01
[Design du prototype] ends 2020-07-15
[Test du prototype] ends 2020-07-25

@enduml

Début/Fin

Il est possible de définir les deux de façon absolu, en précisant des dates.

@startuml

Project starts 2020-07-01
[Design du prototype] starts 2020-07-01
[Test du prototype] starts 2020-07-16
[Design du prototype] ends 2020-07-15
[Test du prototype] ends 2020-07-25

@enduml

WARNING
 This translation need to be updated. 
WARNING

Déclaration sur une ligne (avec la conjonction 'and')

Il est possible de combiner les déclarations sur une ligne en utilisant la conjonction and.

@startuml
Project starts 2020-07-01
[Design du prototype] starts 2020-07-01 and ends 2020-07-15
[Test du prototype] starts 2020-07-16 and lasts 10 days
@enduml

Ajout de contraintes

Il est possible de rajouter des contraintes entre les tâches.

@startuml
[Design du prototype] lasts 15 days
[Test du prototype] lasts 10 days
[Test du prototype] starts at [Design du prototype]'s end
@enduml

@startuml
[Design du prototype] lasts 10 days
[Codage du prototype] lasts 10 days
[Ecriture des tests] lasts 5 days
[Codage du prototype] starts at [Design du prototype]'s end
[Ecriture des tests] starts at [Codage du prototype]'s start
@enduml

Noms courts (avec : as)

Un nom court peut être utilisé pour les tâches à l'aide de l'instruction as.

@startuml
[Design du prototype] as [D] lasts 15 days
[Test du prototype] as [T] lasts 10 days
[T] starts at [D]'s end
@enduml

Choix des couleurs

Il est possible de changer les couleurs des tâches avec les mots clés is colored in.

@startuml
[Design du prototype] lasts 13 days
[Test du prototype] lasts 4 days
[Test du prototype] starts at [Design du prototype]'s end
[Design du prototype] is colored in Fuchsia/FireBrick
[Test du prototype] is colored in GreenYellow/Green
@enduml

Complétion d'une tâche

Il est possible d'attribuer un pourcentage d'avancement à une tâche avec les mots clés is xx% completed.

@startgantt
[foo] lasts 21 days
[foo] is 40% completed
[bar] lasts 30 days and is 10% complete
@endgantt

Jalon (avec le verbe : happen)

Vous pouvez définir des jalons à l'aide du verbe happen.

Jalon relatif (avec utilisation de contraintes sur des tâches)

@startuml
[Test du prototype] lasts 10 days
[Prototype terminé] happens at [Test du prototype]'s end
[Mise en place production] lasts 12 days
[Mise en place production] starts at [Test du prototype]'s end
@enduml

Jalon absolu (avec utilisation d'un date fixe)

@startgantt
Project starts 2020-07-01
[Test prototype] lasts 10 days
[Prototype completed] happens 2020-07-10
[Setup assembly line] lasts 12 days
[Setup assembly line] starts at [Test prototype]'s end
@endgantt

Jalon de fin maximale de tâches

@startgantt
[Task1] lasts 4 days
then [Task1.1] lasts 4 days
[Task1.2] starts at [Task1]'s end and lasts 7 days

[Task2] lasts 5 days
then [Task2.1] lasts 4 days

[MaxTaskEnd] happens at [Task1.1]'s end
[MaxTaskEnd] happens at [Task1.2]'s end
[MaxTaskEnd] happens at [Task2.1]'s end

@endgantt

[Ref. QA-10764]

Lien hypertexte

On peut rajouter des liens aux tâches avec le mot clé links to.

@startgantt
[task1] lasts 10 days
[task1] links to [[http://plantuml.com]]
@endgantt

Calendrier

Vous pouvez définir une date de début pour l'ensemble du projet. Par défault, la première tâche commence à cette date.

@startuml
Project starts the 20th of september 2017
[Design du prototype] as [TASK1] lasts 13 days
[TASK1] is colored in Lavender/LightBlue
@enduml

Colorer des jours

Il est possible d'ajouter des couleurs sur certains jours.

@startgantt
Project starts the 2020/09/01 

2020/09/07 is colored in salmon
2020/09/13 to 2020/09/16 are colored in lightblue

[Prototype design] as [TASK1] lasts 22 days
[TASK1] is colored in Lavender/LightBlue
[Prototype completed] happens at [TASK1]'s end
@endgantt

Zoom

Il est possible de changer l'échelle d'affichage pour les projets qui sont très longs, avec l'un des paramètres suivant :
  • printscale
  • ganttscale
  • projectscale
et une des valeurs suivantes :
  • weekly (par semaine)
  • monthly (par mois)
  • quarterly
  • yearly

(See QA-11272, QA-9041 and QA-10948)

@startgantt
printscale weekly
Project starts the 20th of september 2020
[Prototype design] as [TASK1] lasts 130 days
[TASK1] is colored in Lavender/LightBlue
[Testing] lasts 20 days
[TASK1]->[Testing]
@endgantt

@startgantt
projectscale monthly
Project starts the 20th of september 2020
[Prototype design] as [TASK1] lasts 130 days
[TASK1] is colored in Lavender/LightBlue
[Testing] lasts 20 days
[TASK1]->[Testing]
@endgantt

WARNING
 This translation need to be updated. 
WARNING

Zoom (example for all scale)

You can change zoom, with the parameter:
  • zoom <integer>

Zoom on weekly scale

Without zoom

@startuml
printscale daily
saturday are closed
sunday are closed

Project starts the 1st of january 2021
[Prototype design end] as [TASK1] lasts 8 days
[TASK1] is colored in Lavender/LightBlue
[Testing] lasts 3 days
[TASK1]->[Testing]

2021-01-18 to 2021-01-22 are named [End's committee]
2021-01-18 to 2021-01-22 are colored in salmon 
@enduml

With zoom

@startuml
printscale daily zoom 2
saturday are closed
sunday are closed

Project starts the 1st of january 2021
[Prototype design end] as [TASK1] lasts 8 days
[TASK1] is colored in Lavender/LightBlue
[Testing] lasts 3 days
[TASK1]->[Testing]

2021-01-18 to 2021-01-22 are named [End's committee]
2021-01-18 to 2021-01-22 are colored in salmon 
@enduml

[Ref. QA-13725]

Zoom on weekly scale

Without zoom

@startuml
printscale weekly
saturday are closed
sunday are closed

Project starts the 1st of january 2021
[Prototype design end] as [TASK1] lasts 19 days
[TASK1] is colored in Lavender/LightBlue
[Testing] lasts 14 days
[TASK1]->[Testing]

2021-01-18 to 2021-01-22 are named [End's committee]
2021-01-18 to 2021-01-22 are colored in salmon 
@enduml

With zoom

@startuml
printscale weekly zoom 4
saturday are closed
sunday are closed

Project starts the 1st of january 2021
[Prototype design end] as [TASK1] lasts 19 days
[TASK1] is colored in Lavender/LightBlue
[Testing] lasts 14 days
[TASK1]->[Testing]

2021-01-18 to 2021-01-22 are named [End's committee]
2021-01-18 to 2021-01-22 are colored in salmon 
@enduml

Zoom on monthly scale

Without zoom

@startgantt
projectscale monthly
Project starts the 20th of september 2020
[Prototype design] as [TASK1] lasts 130 days
[TASK1] is colored in Lavender/LightBlue
[Testing] lasts 20 days
[TASK1]->[Testing]

2021-01-18 to 2021-01-22 are named [End's committee]
2021-01-18 to 2021-01-22 are colored in salmon 
@endgantt

With zoom

@startgantt
projectscale monthly zoom 3
Project starts the 20th of september 2020
[Prototype design] as [TASK1] lasts 130 days
[TASK1] is colored in Lavender/LightBlue
[Testing] lasts 20 days
[TASK1]->[Testing]

2021-01-18 to 2021-01-22 are named [End's committee]
2021-01-18 to 2021-01-22 are colored in salmon 
@endgantt

Zoom on quarterly scale

Without zoom

@startgantt
projectscale quarterly
Project starts the 20th of september 2020
[Prototype design] as [TASK1] lasts 130 days
[TASK1] is colored in Lavender/LightBlue
[Testing] lasts 20 days
[TASK1]->[Testing]

2021-01-18 to 2021-01-22 are named [End's committee]
2021-01-18 to 2021-01-22 are colored in salmon 
@endgantt

With zoom

@startgantt
projectscale quarterly zoom 7
Project starts the 20th of september 2020
[Prototype design] as [TASK1] lasts 130 days
[TASK1] is colored in Lavender/LightBlue
[Testing] lasts 20 days
[TASK1]->[Testing]

2021-01-18 to 2021-01-22 are named [End's committee]
2021-01-18 to 2021-01-22 are colored in salmon 
@endgantt

Zoom on yearly scale

Without zoom

@startgantt
projectscale yearly
Project starts the 1st of october 2020
[Prototype design] as [TASK1] lasts 700 days
[TASK1] is colored in Lavender/LightBlue
[Testing] lasts 200 days
[TASK1]->[Testing]

2021-01-18 to 2021-03-22 are colored in salmon 
@endgantt

With zoom

@startgantt
projectscale yearly zoom 2
Project starts the 1st of october 2020
[Prototype design] as [TASK1] lasts 700 days
[TASK1] is colored in Lavender/LightBlue
[Testing] lasts 200 days
[TASK1]->[Testing]

2021-01-18 to 2021-03-22 are colored in salmon 
@endgantt

Jours non travaillés

Il est possible de déclarer certains jours comme non travaillés.

@startuml
project starts the 2018/04/09
saturday are closed
sunday are closed
2018/05/01 is closed
2018/04/17 to 2018/04/19 is closed
[Prototype design] lasts 14 days
[Test prototype] lasts 4 days
[Test prototype] starts at [Prototype design]'s end
[Prototype design] is colored in Fuchsia/FireBrick
[Test prototype] is colored in GreenYellow/Green
@enduml

Puis il est possible de déclarer certains jours non travaillés, comme finalement, travaillés.

@startgantt
2020-07-07 to 2020-07-17 is closed
2020-07-13 is open

Project starts the 2020-07-01
[Prototype design] lasts 10 days
Then [Test prototype] lasts 10 days
@endgantt

Definition of a week depending of closed days

A week is a synonym for how many non-closed days are in a week, as:

@startgantt
Project starts 2021-03-29
[Review 01] happens at 2021-03-29
[Review 02 - 3 weeks] happens on 3 weeks after [Review 01]'s end
[Review 02 - 21 days] happens on 21 days after [Review 01]'s end
@endgantt

So if you specify Saturday and Sunday as closed, a week will be equivalent to 5 days, as:

@startgantt
Project starts 2021-03-29
saturday are closed
sunday are closed
[Review 01] happens at 2021-03-29
[Review 02 - 3 weeks] happens on 3 weeks after [Review 01]'s end
[Review 02 - 21 days] happens on 21 days after [Review 01]'s end
@endgantt

[Ref. QA-13434]

Succession des tâches simplifiée et dépendances

Il est possible d'utiliser le mot-clés then pour définir des tâches consécutives.

@startuml
[Prototype design] lasts 14 days
then [Test prototype] lasts 4 days
then [Deploy prototype] lasts 6 days
@enduml

Vous pouvez aussi utiliser une flèche ->.

@startuml
[Prototype design] lasts 14 days
[Build prototype] lasts 4 days
[Prepare test] lasts 6 days
[Prototype design] -> [Build prototype]
[Prototype design] -> [Prepare test]
@enduml

Travailler avec des ressources

Vous pouvez affecter des ressources aux tâches à l'aide du mot-clé on et en mettant le nom de la ressource entre accolades. Vous pouvez aussi rajouter un taux de charge en pourcentage.

@startgantt
[Task1] on {Alice} lasts 10 days
[Task2] on {Bob:50%} lasts 2 days
then [Task3] on {Alice:25%} lasts 1 days
@endgantt

Plusieurs ressources peuvent être affectées à une tâche :

@startgantt
[Task1] on {Alice} {Bob} lasts 20 days
@endgantt

Les ressources peuvent être marquées comme inopérantes certains jours:

@startgantt
project starts on 2020-06-19
[Task1] on {Alice} lasts 10 days
{Alice} is off on 2020-06-24 to 2020-06-26
@endgantt

Séparateur

Il est possible d'utiliser -- pour séparer ou grouper des tâches ensemble.

@startuml
[Task1] lasts 10 days
then [Task2] lasts 4 days
-- Phase Two --
then [Task3] lasts 5 days
then [Task4] lasts 6 days
@enduml

Exemple plus complexe

On peut se servir de la conjonction de coordination and.

Il est aussi possible de spécifier un délai (avec before ou after) dans les contraintes.

@startuml
[Design du prototype] lasts 13 days and is colored in Lavender/LightBlue
[Test du prototype] lasts 9 days and is colored in Coral/Green and starts 3 days after [Design du prototype]'s end
[Écriture des tests] lasts 5 days and ends at [Design du prototype]'s end
[Embauche rédacteurs] lasts 6 days and ends at [Écriture des tests]'s start
[Ecriture des rapports] is colored in Coral/Green
[Ecriture des rapports] starts 1 day before [Test du prototype]'s start and ends at [Test du prototype]'s end
@enduml

Comments

As is mentioned on Common Commands page:
Everything that starts with simple quote ' is a comment.

You can also put comments on several lines using /' to start and '/ to end.
(i.e.: the first character (except space character) of a comment line must be a simple quote ')

@startgantt
' This is a comment

[T1] lasts 3 days

/' this comment
is on several lines '/

[T2] starts at [T1]'s end and lasts 1 day
@endgantt

Using style

Without style (by default)

@startuml
[Task1] lasts 20 days
note bottom
  memo1 ...
  memo2 ...
  explanations1 ...
  explanations2 ...
end note
[Task2] lasts 4 days
[Task1] -> [Task2]
-- Separator title --
[M1] happens on 5 days after [Task1]'s end
-- end --
@enduml

With style

You can use style to change rendering of elements.

@startuml
<style>
ganttDiagram {
	task {
		FontName Helvetica
		FontColor red
		FontSize 18
		FontStyle bold
		BackGroundColor GreenYellow
		LineColor blue
	}
	milestone {
		FontColor blue
		FontSize 25
		FontStyle italic
		BackGroundColor yellow
		LineColor red
	}
	note {
		FontColor DarkGreen
		FontSize 10
		LineColor OrangeRed
	}
	arrow {
		FontName Helvetica
		FontColor red
		FontSize 18
		FontStyle bold
		BackGroundColor GreenYellow
		LineColor blue
	}
	separator {
		LineColor red
		BackGroundColor green
		FontSize 16
		FontStyle bold
		FontColor purple
	}
}
</style>
[Task1] lasts 20 days
note bottom
  memo1 ...
  memo2 ...
  explanations1 ...
  explanations2 ...
end note
[Task2] lasts 4 days
[Task1] -> [Task2]
-- Separator title --
[M1] happens on 5 days after [Task1]'s end
-- end --
@enduml

[Ref. QA-10835, QA-12045, QA-11877 and PR-438]

With style (full example)

@startgantt
<style>
ganttDiagram {
	task {
		FontName Helvetica
		FontColor red
		FontSize 18
		FontStyle bold
		BackGroundColor GreenYellow
		LineColor blue
	}
	milestone {
		FontColor blue
		FontSize 25
		FontStyle italic
		BackGroundColor yellow
		LineColor red
	}
	note {
		FontColor DarkGreen
		FontSize 10
		LineColor OrangeRed
	}
	arrow {
		FontName Helvetica
		FontColor red
		FontSize 18
		FontStyle bold
		BackGroundColor GreenYellow
		LineColor blue
		LineStyle 8.0;13.0
		LineThickness 3.0
	}
	separator {
		BackgroundColor lightGreen
		LineStyle 8.0;3.0
		LineColor red
		LineThickness 1.0
		FontSize 16
		FontStyle bold
		FontColor purple
		Margin 5
		Padding 20
	}
	timeline {
	    BackgroundColor Bisque
	}
	closed {
		BackgroundColor pink
		FontColor red
	}
}
</style>
Project starts the 2020-12-01

[Task1] lasts 10 days
sunday are closed

note bottom
  memo1 ...
  memo2 ...
  explanations1 ...
  explanations2 ...
end note

[Task2] lasts 20 days
[Task2] starts 10 days after [Task1]'s end
-- Separator title --
[M1] happens on 5 days after [Task1]'s end

<style>
	separator {
	    LineColor black
		Margin 0
		Padding 0
	}
</style>

-- end --
@endgantt

[Ref. QA-13570, QA-13672]

DONE
Thanks for style for Separator and all style for Arrow (thickness...)

Add notes

@startgantt
[task01] lasts 15 days
note bottom
  memo1 ...
  memo2 ...
  explanations1 ...
  explanations2 ...
end note

[task01] -> [task02]

@endgantt

Example with overlap.

@startgantt
[task01] lasts 15 days
note bottom
  memo1 ...
  memo2 ...
  explanations1 ...
  explanations2 ...
end note

[task01] -> [task02]
[task03] lasts 5 days

@endgantt

@startgantt

-- test01 --

[task01] lasts 4 days
note bottom
'note left
memo1 ...
memo2 ...
explanations1 ...
explanations2 ...
end note

[task02] lasts 8 days
[task01] -> [task02]
note bottom
'note left
memo1 ...
memo2 ...
explanations1 ...
explanations2 ...
end note
-- test02 --

[task03] as [t3] lasts 7 days
[t3] -> [t4]
@endgantt

DONE
Thanks for correction (of #386 on v1.2020.18) when overlapping

@startgantt

Project starts 2020-09-01

[taskA] starts 2020-09-01 and lasts 3 days
[taskB] starts 2020-09-10 and lasts 3 days
[taskB] displays on same row as [taskA]

[task01] starts 2020-09-05 and lasts 4 days

then [task02] lasts 8 days
note bottom
  note for task02
  more notes
end note

then [task03] lasts 7 days
note bottom
  note for task03
  more notes
end note

-- separator --

[taskC] starts 2020-09-02 and lasts 5 days
[taskD] starts 2020-09-09 and lasts 5 days
[taskD] displays on same row as [taskC]

[task 10] starts 2020-09-05 and lasts 5 days
then [task 11] lasts 5 days
note bottom
  note for task11
  more notes
end note
@endgantt

Pause tasks

@startgantt
Project starts the 5th of december 2018
saturday are closed
sunday are closed
2018/12/29 is opened
[Prototype design] lasts 17 days
[Prototype design] pauses on 2018/12/13
[Prototype design] pauses on 2018/12/14
[Prototype design] pauses on monday
[Test prototype] starts at [Prototype design]'s end and lasts 2 weeks
@endgantt

Change link colors

You can change link colors:
  • with this syntax: with <color> <style> link

@startgantt
[T1] lasts 4 days
[T2] lasts 4 days and starts 3 days after [T1]'s end with blue dotted link
[T3] lasts 4 days and starts 3 days after [T2]'s end with green bold link
[T4] lasts 4 days and starts 3 days after [T3]'s end with green dashed link
@endgantt

  • or directly by using arrow style

@startuml
<style>
ganttDiagram {
	arrow {
		LineColor blue
	}
}
</style>
[Prototype design] lasts 7 days
[Build prototype] lasts 4 days
[Prepare test] lasts 6 days
[Prototype design] -[#FF00FF]-> [Build prototype]
[Prototype design] -[dotted]-> [Prepare test]
Then [Run test]  lasts 4 days
@enduml

[Ref. QA-13693]

Tasks or Milestones on the same line

You can put Tasks or Milestones on the same line, with this syntax:
  • [T|M] displays on same row as [T|M]

@startgantt
[Prototype design] lasts 13 days
[Test prototype] lasts 4 days and 1 week
[Test prototype] starts 1 week and 2 days after [Prototype design]'s end
[Test prototype] displays on same row as [Prototype design]
[r1] happens on 5 days after [Prototype design]'s end
[r2] happens on 5 days after [r1]'s end
[r3] happens on 5 days after [r2]'s end
[r2] displays on same row as [r1]
[r3] displays on same row as [r1]
@endgantt

Highlight today

@startgantt
Project starts the 20th of september 2018
sunday are close
2018/09/21 to 2018/09/23 are colored in salmon
2018/09/21 to 2018/09/30 are named [Vacation in the Bahamas] 

today is 30 days after start and is colored in #AAF
[Foo] happens 40 days after start
[Dummy] lasts 10 days and starts 10 days after start

@endgantt

Task between two milestones

@startgantt
project starts on 2020-07-01
[P_start] happens 2020-07-03
[P_end]   happens 2020-07-13
[Prototype design] occurs from [P_start] to [P_end]
@endgantt

Grammar and verbal form

Verbal form Example
[T] starts
[M] happens

Add title, header, footer, caption or legend on gantt diagram

@startuml

header some header

footer some footer

title My title

[Prototype design] lasts 13 days

legend
The legend
end legend

caption This is caption

@enduml

(See also: Common commands)

Removing Foot Boxes (example for all scale)

You can use the hide footbox keywords to remove the foot boxes of the gantt diagram (as for sequence diagram).

Examples on:

  • daily scale (without project start)

@startgantt

hide footbox
title Foot Box removed

[Prototype design] lasts 15 days
[Test prototype] lasts 10 days
@endgantt

  • daily scale

@startgantt

Project starts the 20th of september 2017
[Prototype design] as [TASK1] lasts 13 days
[TASK1] is colored in Lavender/LightBlue

hide footbox
@endgantt

  • weekly scale

@startgantt
hide footbox

printscale weekly
saturday are closed
sunday are closed

Project starts the 1st of january 2021
[Prototype design end] as [TASK1] lasts 19 days
[TASK1] is colored in Lavender/LightBlue
[Testing] lasts 14 days
[TASK1]->[Testing]

2021-01-18 to 2021-01-22 are named [End's committee]
2021-01-18 to 2021-01-22 are colored in salmon 
@endgantt

  • monthly scale

@startgantt

hide footbox

projectscale monthly
Project starts the 20th of september 2020
[Prototype design] as [TASK1] lasts 130 days
[TASK1] is colored in Lavender/LightBlue
[Testing] lasts 20 days
[TASK1]->[Testing]

2021-01-18 to 2021-01-22 are named [End's committee]
2021-01-18 to 2021-01-22 are colored in salmon 
@endgantt

  • quarterly scale

@startgantt

hide footbox

projectscale quarterly
Project starts the 1st of october 2020
[Prototype design] as [TASK1] lasts 700 days
[TASK1] is colored in Lavender/LightBlue
[Testing] lasts 200 days
[TASK1]->[Testing]

2021-01-18 to 2021-03-22 are colored in salmon 
@endgantt

  • yearly scale

@startgantt

hide footbox

projectscale yearly
Project starts the 1st of october 2020
[Prototype design] as [TASK1] lasts 700 days
[TASK1] is colored in Lavender/LightBlue
[Testing] lasts 200 days
[TASK1]->[Testing]

2021-01-18 to 2021-03-22 are colored in salmon 
@endgantt