Registrati
Diagrammi di flusso
Espressione grafica
Mappe mentali
Espressione strutturata
Note
Espressione efficiente

Diagramma di GanttSintassi

Diagramma di Gantt

Il diagramma di Gantt è un tipo di diagramma a barre usato per mostrare l'avanzamento di un progetto e il tempo necessario per completarlo. Il diagramma di Gantt mostra il numero di giorni tra la data di inizio e quella di fine degli elementi terminali e degli elementi di riepilogo di un progetto.

Note

Il diagramma di Gantt registra ogni attività pianificata come una barra continua che si estende da sinistra verso destra. L'asse x rappresenta il tempo, l'asse y registra le diverse attività e l'ordine in cui vengono completate.

Ancora più importante, quando una data, un numero di giorni o un insieme specifico di date di un'attività vengono esclusi, il diagramma di Gantt si adatta a queste modifiche prolungando verso destra dello stesso numero di giorni, invece di creare lacune interne all'attività.

Codice
                            
Copia
Incorpora
gantt title A Gantt Diagram dateFormat YYYY-MM-DD excludes 2026-03-16,2026-03-18,2026-03-19 section Section A task :a1, 2026-03-07, 7d Another task :after a1, 5d

Tuttavia, se le date escluse si trovano tra due attività che iniziano in modo consecutivo, le date escluse vengono saltate e lasciate vuote sul diagramma, e le attività successive inizieranno dopo la fine delle date escluse. Come mostrato di seguito:

Codice
                            
Copia
Incorpora
gantt title A Gantt Diagram dateFormat YYYY-MM-DD excludes Sunday, Friday, Saturday section Section A task :a1, 2026-03-07, 5d Another task :after a1, 7d

Il diagramma di Gantt è utile per tenere traccia del tempo necessario a completare un progetto, ma con qualche accorgimento può essere usato anche per rappresentare graficamente i "giorni non lavorativi".

Sintassi

Codice
                            
Copia
Incorpora
gantt dateFormat YYYY-MM-DD title Adding GANTT diagram functionality to mermaid excludes weekends %% (`excludes` accepts specific dates in YYYY-MM-DD format, days of the week ("sunday") or "weekends", but not the word "weekdays".) section A section Completed task :done, des1, 2026-01-06,2026-01-08 Active task :active, des2, 2026-01-09, 3d Future task : des3, after des2, 5d Future task2 : des4, after des3, 5d section Critical tasks Completed task in the critical line :crit, done, 2026-01-06,24h Implement parser and jison :crit, done, after des1, 2d Create tests for parser :crit, active, 3d Future task in critical line :crit, 5d Create tests for renderer :2d Add to mermaid :until isadded Functionality added :milestone, isadded, 2026-01-25, 0d section Documentation Describe gantt syntax :active, a1, after des1, 3d Add gantt diagram to demo page :after a1 , 20h Add another diagram to demo page :doc1, after a1 , 48h section Last section Describe gantt syntax :after doc1, 3d Add gantt diagram to demo page :20h Add another diagram to demo page :48h

Le attività sono per impostazione predefinita consecutive; la data di inizio dell'attività successiva è per impostazione predefinita la data di fine dell'attività precedente.

Il titolo dell'attività e i suoi metadati sono separati da due punti (:), e gli elementi dei metadati sono separati da virgole (,). Le etichette valide includono active, done, crit e milestone. Le etichette sono opzionali, ma se usate devono essere poste all'inizio. Una volta gestite le etichette, i restanti elementi dei metadati sono interpretati come segue:

  • Se viene specificato un singolo elemento, esso determina quando termina l'attività. Può essere una data o un orario specifico oppure una durata. Se viene specificata una durata, questa viene aggiunta alla data di inizio dell'attività per determinare la data di fine, tenendo conto di eventuali esclusioni.
  • Se vengono specificati due elementi, il secondo è interpretato allo stesso modo del caso precedente. Il primo elemento può specificare una data o un orario di inizio espliciti (il formato è indicato da dateFormat), oppure può fare riferimento a un'altra attività tramite after <otherTaskID> [[otherTaskID2 [otherTaskID3]]...]. In quest'ultimo caso, la data di inizio dell'attività sarà impostata in base alla data di fine più recente tra le attività referenziate.
  • Se vengono specificati tre elementi, gli ultimi due sono interpretati come nei casi precedenti. Il primo elemento indicherà l'ID dell'attività, che può essere referenziato con la sintassi later <taskID>.
Sintassi dei metadati Data di inizio Data di fine ID
<taskID>, <startDate>, <endDate> startdate interpretato usando dateformat endDate interpretato usando dateformat taskID
<taskID>, <startDate>, <length> startdate interpretato usando dateformat Data di inizio + length taskID
<taskID>, after <otherTaskId>, <endDate> Data di fine dell'attività specificata in precedenza otherTaskID endDate interpretato usando dateformat taskID
<taskID>, after <otherTaskId>, <length> Data di fine dell'attività specificata in precedenza otherTaskID Data di inizio + length taskID
<taskID>, <startDate>, until <otherTaskId> startdate interpretato usando dateformat Data di inizio dell'attività specificata in precedenza otherTaskID taskID
<taskID>, after <otherTaskId>, until <otherTaskId> Data di fine dell'attività specificata in precedenza otherTaskID Data di inizio dell'attività specificata in precedenza otherTaskID taskID
<startDate>, <endDate> startdate interpretato usando dateformat 使用 dateformat 解释的 enddate Non applicabile
<startDate>, <length> startdate interpretato usando dateformat Data di inizio + length Non applicabile
after <otherTaskID>, <endDate> Data di fine dell'attività specificata in precedenza otherTaskID 使用 dateformat 解释的 enddate Non applicabile
after <otherTaskID>, <length> Data di fine dell'attività specificata in precedenza otherTaskID Data di inizio + length Non applicabile
<startDate>, until <otherTaskId> startdate interpretato usando dateformat Data di inizio dell'attività specificata in precedenza otherTaskID Non applicabile
after <otherTaskId>, until <otherTaskId> Data di fine dell'attività specificata in precedenza otherTaskID Data di inizio dell'attività specificata in precedenza otherTaskID Non applicabile
<endDate> Data di fine dell'attività precedente 使用 dateformat 解释的 enddate Non applicabile
<length> Data di fine dell'attività precedente Data di inizio + length Non applicabile
until <otherTaskId> Data di fine dell'attività precedente Data di inizio dell'attività specificata in precedenza otherTaskID Non applicabile

Formato della durata

Quando si specifica <length>, si usa un numero seguito da uno dei seguenti suffissi di unità:

Unità Suffisso Esempio
Millisecondo ms 50ms
Secondo s 30s
Minuto m 30m
Ora h 4h
Giorno d 7d
Settimana w 3w
Mese m 2m
Anno y 1y

Sono supportati anche i valori decimali (ad esempio, 2.5d). I marcatori di durata non validi (ad esempio, 3dX) vengono ignorati e l'attività avrà per impostazione predefinita una durata pari a zero.

Per semplicità, la tabella non mostra più attività elencate con la sintassi after. Ecco un esempio:

Codice
                            
Copia
Incorpora
gantt apple :a, 2026-07-20, 1w banana :crit, b, 2026-07-23, 1d cherry :active, c, after b a, 1d kiwi :d, 2026-07-20, until b c

Titolo

title è una stringa opzionale, mostrata nella parte superiore del diagramma di Gantt, che descrive l'intero diagramma.

Esclusioni

excludes è una proprietà opzionale che accetta una data specifica (formato YYYY-MM-DD), un giorno della settimana (ad esempio "sunday") oppure "weekends", ma non può usare la parola "weekdays". Queste date verranno contrassegnate sul diagramma ed escluse dal calcolo della durata dell'attività. Ciò significa che se il periodo di durata di un'attività include date escluse, i giorni esclusi verranno aggiunti alla data di fine dell'attività, per garantire che la durata dell'attività coincida con quella specificata nel codice.

Fine settimana

Quando si escludono i fine settimana, si può impostare il fine settimana su venerdì e sabato, oppure su sabato e domenica. Per impostazione predefinita, il fine settimana è sabato e domenica. Per definire il giorno di inizio del fine settimana, puoi aggiungere su una nuova riga una proprietà opzionale weekend, seguita da friday o saturday.

Codice
                            
Copia
Incorpora
gantt title A Gantt Diagram Excluding Fri - Sat weekends dateFormat Букмекерлар-MM-DD excludes weekends weekend friday section Section A task :a1, 2026-01-01, 30d Another task :after a1, 20d

Dichiarazione delle sezioni

Puoi suddividere il diagramma in sezioni, per separare le diverse parti di un progetto (ad esempio sviluppo e documentazione).

A questo scopo, usa la sintassi section all'inizio di una riga e assegnale un nome. Nota che, a differenza del titolo dell'intero diagramma, questo nome è obbligatorio.

Milestone

Puoi aggiungere milestone al diagramma. Le milestone sono diverse dalle attività, perché rappresentano un momento specifico e sono identificate dalla sintassi milestone. Ecco un esempio d'uso delle milestone: la posizione esatta di una milestone è determinata dalla sua data di inizio e dalla durata dell'attività, come mostrato di seguito:

Codice
                            
Copia
Incorpora
gantt dateFormat HH:mm axisFormat %H:%M Initial milestone : milestone, m1, 17:49, 2m Task A : 10m Task B : 5m Final milestone : milestone, m2, 18:08, 4m

Marcatore verticale

vert indica l'aggiunta di una linea verticale nel diagramma di Gantt, per evidenziare facilmente date importanti, come scadenze, eventi importanti o checkpoint. Questi marcatori si estendono lungo tutto il diagramma e sono posizionati in base alla data fornita. A differenza delle milestone, i marcatori verticali non occupano una riga. Sono puramente punti di riferimento visivi, che aiutano a scomporre la timeline e a rendere più riconoscibili i momenti importanti.

Codice
                            
Copia
Incorpora
gantt dateFormat HH:mm axisFormat %H:%M Initial vert : vert, v1, 17:30, 2m Task A : 3m Task B : 8m Final vert : vert, v2, 17:58, 4m

Impostare la data

dateFormat definisce il formato di input delle date per gli elementi del diagramma di Gantt, axisFormat definisce il formato di output delle date durante il rendering del diagramma.

Formato di input della data

Il formato di input della data predefinito è YYYY-MM-DD; puoi personalizzare dateFormat.

                            
Copia
Incorpora
dateFormat YYYY-MM-DD

Sono supportate le seguenti opzioni di formato:

输入 Esempio Descrizione
YYYY 2026 Anno a 4 cifre
YY 26 Anno a 2 cifre
Q 1..4 Numero del trimestre
M MM 1..12 Numero del mese
D DD 1..31 Giorno del mese
Do 1st..31st Giorno del mese con ordinale
DDD DDDD 1..365 Giorno dell'anno
X 1410715640.579 Timestamp Unix
x 1410715640579 Timestamp Unix in millisecondi
H HH 0..23 Ora in formato 24 ore
h hh 1..12 Ora in formato 12 ore, da usare con a A
a A am pm AM o PM
m mm 0..59 Minuto
s ss 0..59 Secondi
S 0..9 Decimo di secondo
SS 0..99 Centesimo di secondo
SSS 0..999 Millesimo di secondo
Z ZZ +12:00 Offset rispetto a UTC, nel formato +-HH:mm, +-HHmm o Z

Formato di output della data dell'asse

Il formato di output della data predefinito è YYYY-MM-DD. Puoi personalizzare axisFormat, ad esempio 2026-Q1 indica il primo trimestre del 2026.

                            
Copia
Incorpora
axisFormat %Y-%m-%d

Sono supportate le seguenti stringhe di formato:

Formato,Definizione
%a Nome abbreviato del giorno della settimana
%A Nome completo del giorno della settimana
%b Nome abbreviato del mese
%B Nome completo del mese
%c Data e ora localizzate
%d Data, numero decimale [01,31]
%e Data, numero decimale riempito con spazi [1,31], equivalente a %_d
%H Ora (formato 24 ore), numero decimale [00,23]
%I Ora (formato 12 ore), numero decimale [01,12]
%j Giorno dell'anno, numero decimale [001,366]
%m Mese, numero decimale [01,12]
%M Minuto, numero decimale [00,59]
%L Millisecondo, numero decimale [000, 999]
%p AM o PM
%S Secondo, numero decimale [00,59]
%U Settimana dell'anno (con la domenica come primo giorno della settimana), numero decimale [00,53]
%w Giorno della settimana, numero decimale riempito con spazi [0,6], dove 0 rappresenta la domenica
%W Settimana dell'anno (con il lunedì come primo giorno della settimana), numero decimale [00,53]
%x Rappresentazione localizzata della data, ad esempio: 2026-09-18
%X Rappresentazione localizzata dell'ora, ad esempio: 14:30:00
%y Anno senza secolo, numero decimale [00,99], ad esempio 26 rappresenta l'anno 2026
%Y Anno con secolo, numero decimale
%Z Abbreviazione del nome del fuso orario, ad esempio "-0700"
%% Carattere di escape, usato per mostrare il segno di percentuale % stesso

Tacca dell'asse

Per impostazione predefinita, le tacche di output sono automatiche. Puoi personalizzare tickInterval, ad esempio 1day o 1week.

                            
Copia
Incorpora
tickInterval 1day

Lo schema è

                            
Copia
Incorpora
/^([1-9][0-9]*)(millisecond|second|minute|hour|day|week|month)$/;

Un tickInterval basato sulla settimana inizia per impostazione predefinita dalla domenica. Se vuoi specificare un altro giorno della settimana in cui inizia tickInterval, usa l'opzione weekday, con il codice seguente:

Codice
                            
Copia
Incorpora
gantt tickInterval 1week weekday monday

Output in modalità compatta

La modalità compatta ti permette di mostrare più attività sulla stessa riga. La modalità di visualizzazione del grafico è controllata dall'impostazione YAML precedente, che abilita la modalità compatta per il diagramma di Gantt.

Codice
                            
Copia
Incorpora
--- displayMode: compact --- gantt title A Gantt Diagram dateFormat YYYY-MM-DD section Section A task :a1, 2026-01-01, 30d Another task :a2, 2026-01-20, 25d Another one :a3, 2026-02-10, 20d

Puoi inserire commenti in un diagramma di Gantt; il parser li ignorerà. I commenti devono occupare una riga propria e devono iniziare con %% (doppio segno di percentuale). Tutto il testo dal commento fino al successivo carattere di nuova riga sarà considerato un commento, inclusa qualsiasi sintassi del diagramma.

Codice
                            
Copia
Incorpora
gantt title A Gantt Diagram %% This is a comment dateFormat YYYY-MM-DD section Section A task :a1, 2014-01-01, 30d Another task :after a1, 20d section Another Task in Another :2014-01-12, 12d another task :24d

Marcatore di oggi

Puoi impostare lo stile o nascondere il marcatore della data corrente. Per impostare lo stile, aggiungi un valore alla chiave todayMarker.

                            
Copia
Incorpora
todayMarker stroke-width:5px,stroke:#0f0,opacity:0.5

Per nascondere il marcatore, imposta todayMarker su off.

                            
Copia
Incorpora
todayMarker off

Esempio

Diagramma di Gantt a barre

Codice
                            
Copia
Incorpora
gantt title Git Issues - days since last update dateFormat X axisFormat %s section Issue19062 71 : 0, 71 section Issue19401 36 : 0, 36 section Issue193 34 : 0, 34 section Issue7441 9 : 0, 9 section Issue1300 5 : 0, 5

Timeline (con commenti, CSS e configurazione frontmatter)

Codice
                            
Copia
Incorpora
--- # Frontmatter config, YAML comments title: Ignored if specified in chart displayMode: compact #gantt specific setting but works at this level too config: # theme: forest # themeCSS: " #item36 { fill: CadetBlue } " themeCSS: " // YAML supports multiline strings using a newline markers: #item36 { fill: CadetBlue } // Custom marker workaround CSS from forum (below) rect[id^=workaround] { height: calc(100% - 50px) ; transform: translate(9px, 25px); y: 0; width: 1.5px; stroke: none; fill: red; } text[id^=workaround] { fill: red; y: 100%; font-size: 15px;} " gantt: useWidth: 400 rightPadding: 0 topAxis: true #false numberSectionStyles: 2 --- gantt title Timeline - Gantt Sampler dateFormat YYYY axisFormat %y %% this next line doesn't recognise 'decade' or 'year', but will silently ignore tickInterval 1decade section Issue19062 71 : item71, 1900, 1930 section Issue19401 36 : item36, 1913, 1935 section Issue1300 94 : item94, 1910, 1915 5 : item5, 1920, 1925 0 : milestone, item0, 1918, 1s 9 : vert, 1906, 1s %% not yet official 64 : workaround, 1923, 1s %% custom CSS object https://github.com/mermaid-js/mermaid/issues/3250