Processo Tipo
Expressão gráfica
Pensamento Tipo
Expressão estruturada
Anotações Tipo
Expressão eficiente

Diagrama de GanttSintaxe

Diagrama de Gantt

O diagrama de Gantt é um tipo de gráfico de barras usado para exibir o progresso de um projeto e o tempo necessário para concluí-lo. O diagrama de Gantt mostra o número de dias entre as datas de início e de conclusão dos elementos terminais e dos elementos resumidos do projeto.

Observações

O diagrama de Gantt registra cada tarefa planejada como uma barra contínua que se estende da esquerda para a direita. O eixo x representa o tempo, e o eixo y registra as diferentes tarefas e sua ordem de conclusão.

Mais importante ainda, quando a data, o número de dias ou um conjunto específico de datas de uma tarefa é excluído, o diagrama de Gantt se ajusta a essas mudanças estendendo-se para a direita pelo mesmo número de dias, em vez de criar lacunas dentro da tarefa.

Código
                            
Copiar
Incorporar
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

No entanto, se a data excluída estiver entre duas tarefas de início consecutivo, a data excluída será ignorada no diagrama e deixada em branco, e a tarefa começará após o fim da data excluída. Como mostrado abaixo:

Código
                            
Copiar
Incorporar
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

O diagrama de Gantt é útil para acompanhar o tempo necessário para concluir um projeto, mas com alguns ajustes também pode ser usado para representar graficamente os "dias não úteis".

Sintaxe

Código
                            
Copiar
Incorporar
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

As tarefas são, por padrão, consecutivas, e a data de início da próxima tarefa é, por padrão, a data de término da tarefa anterior.

O título da tarefa e seus metadados são separados por dois-pontos (:), e os itens de metadados são separados por vírgulas (,). Os rótulos válidos incluem active, done, crit e milestone. Os rótulos são opcionais, mas, se usados, devem vir primeiro. Após processar os rótulos, os itens de metadados restantes são interpretados da seguinte forma:

  • Se um único item for especificado, ele determinará quando a tarefa termina. Pode ser uma data ou hora específica, ou uma duração. Se uma duração for especificada, ela será somada à data de início da tarefa para determinar a data de término, considerando quaisquer exclusões.
  • Se dois itens forem especificados, o segundo item será interpretado da mesma forma que no caso anterior. O primeiro item pode especificar uma data ou hora de início explícita (o formato é definido por dateFormat), ou pode referenciar outra tarefa por meio de after <otherTaskID> [[otherTaskID2 [otherTaskID3]]...]. Neste último caso, a data de início da tarefa será definida com base na data de término mais tardia de qualquer tarefa referenciada.
  • Se três itens forem especificados, os dois últimos itens serão interpretados conforme os casos anteriores. O primeiro item indicará o ID da tarefa, que pode ser referenciado com a sintaxe later <taskID>.
Sintaxe de metadados Data de início Data de término ID
<taskID>, <startDate>, <endDate> startdate interpretado com dateformat endDate interpretado com dateformat taskID
<taskID>, <startDate>, <length> startdate interpretado com dateformat Data de início + length taskID
<taskID>, after <otherTaskId>, <endDate> A data de término da tarefa otherTaskID especificada anteriormente endDate interpretado com dateformat taskID
<taskID>, after <otherTaskId>, <length> A data de término da tarefa otherTaskID especificada anteriormente Data de início + length taskID
<taskID>, <startDate>, until <otherTaskId> startdate interpretado com dateformat A data de início da tarefa otherTaskID especificada anteriormente taskID
<taskID>, after <otherTaskId>, until <otherTaskId> A data de término da tarefa otherTaskID especificada anteriormente A data de início da tarefa otherTaskID especificada anteriormente taskID
<startDate>, <endDate> startdate interpretado com dateformat 使用 dateformat 解释的 enddate Não aplicável
<startDate>, <length> startdate interpretado com dateformat Data de início + length Não aplicável
after <otherTaskID>, <endDate> A data de término da tarefa otherTaskID especificada anteriormente 使用 dateformat 解释的 enddate Não aplicável
after <otherTaskID>, <length> A data de término da tarefa otherTaskID especificada anteriormente Data de início + length Não aplicável
<startDate>, until <otherTaskId> startdate interpretado com dateformat A data de início da tarefa otherTaskID especificada anteriormente Não aplicável
after <otherTaskId>, until <otherTaskId> A data de término da tarefa otherTaskID especificada anteriormente A data de início da tarefa otherTaskID especificada anteriormente Não aplicável
<endDate> A data de término da tarefa anterior 使用 dateformat 解释的 enddate Não aplicável
<length> A data de término da tarefa anterior Data de início + length Não aplicável
until <otherTaskId> A data de término da tarefa anterior A data de início da tarefa otherTaskID especificada anteriormente Não aplicável

Formato de duração

Ao especificar <length>, use um número seguido de um dos seguintes sufixos de unidade:

Unidade Sufixo Exemplo
Milissegundo ms 50ms
Segundo s 30s
Minuto m 30m
Hora h 4h
Dia d 7d
Semana w 3w
Mês m 2m
Ano y 1y

Também há suporte a valores decimais (por exemplo, 2.5d). Marcações de duração inválidas (por exemplo, 3dX) serão ignoradas, e a tarefa terá duração padrão zero.

Para simplificar, a tabela não mostra várias tarefas listadas com a sintaxe after. A seguir está um exemplo:

Código
                            
Copiar
Incorporar
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

Título

title é uma string opcional exibida no topo do diagrama de Gantt, usada para descrever todo o diagrama.

Exclusão

excludes é uma propriedade opcional que aceita datas específicas (no formato YYYY-MM-DD), dias da semana (por exemplo "sunday") ou "weekends", mas não pode usar a palavra "weekdays". Essas datas serão marcadas no diagrama e excluídas do cálculo de duração das tarefas. Isso significa que, se o período de duração de uma tarefa incluir datas excluídas, os dias excluídos serão somados ao horário de término da tarefa, para garantir que a duração da tarefa seja consistente com a especificada no código.

Fim de semana

Ao excluir fins de semana, você pode definir o fim de semana como sexta e sábado, ou como sábado e domingo. Por padrão, o fim de semana é sábado e domingo. Para definir o dia de início do fim de semana, adicione em uma nova linha uma propriedade opcional weekend, seguida de friday ou saturday.

Código
                            
Copiar
Incorporar
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

Declaração de seção

Você pode dividir o diagrama em seções, separando diferentes partes do projeto (por exemplo, desenvolvimento e documentação).

Para isso, use a sintaxe section no início de uma linha e dê um nome a ela. Observe que, diferentemente do título de todo o diagrama, este nome é obrigatório.

Marco

Você pode adicionar marcos ao diagrama. Os marcos são diferentes das tarefas, pois representam um momento específico e são identificados pela sintaxe milestone. A seguir está um exemplo de uso de marcos: a posição exata do marco é determinada pela data de início do marco e pela duração da tarefa, como mostrado abaixo:

Código
                            
Copiar
Incorporar
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

Marcação vertical

vert indica a adição de uma linha vertical no diagrama de Gantt, para destacar facilmente datas importantes, como prazos, eventos importantes ou pontos de verificação. Essas marcações se estendem por todo o diagrama e são posicionadas de acordo com a data que você fornecer. Diferentemente dos marcos, as marcações verticais não ocupam uma linha. Elas são puramente pontos de referência visuais, que ajudam a dividir a linha do tempo, tornando os momentos importantes mais fáceis de identificar.

Código
                            
Copiar
Incorporar
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

Definir data

dateFormat define o formato de entrada de data dos elementos do diagrama de Gantt, e axisFormat define o formato de saída das datas ao renderizar o diagrama.

Formato de data de entrada

O formato de data de entrada padrão é YYYY-MM-DD; você pode personalizar o dateFormat.

                            
Copiar
Incorporar
dateFormat YYYY-MM-DD

Há suporte às seguintes opções de formato:

输入 Exemplo Descrição
YYYY 2026 Ano com 4 dígitos
YY 26 Ano com 2 dígitos
Q 1..4 Número do trimestre
M MM 1..12 Número do mês
D DD 1..31 Dia do mês
Do 1st..31st Dia do mês com ordinal
DDD DDDD 1..365 Dia do ano
X 1410715640.579 Carimbo de data/hora Unix
x 1410715640579 Carimbo de data/hora Unix em milissegundos
H HH 0..23 Horário de 24 horas
h hh 1..12 Horário de 12 horas, usado com a A
a A am pm AM ou PM
m mm 0..59 Minuto
s ss 0..59 Segundo
S 0..9 Décimo de segundo
SS 0..99 Centésimo de segundo
SSS 0..999 Milésimo de segundo
Z ZZ +12:00 Deslocamento em relação ao UTC, no formato +-HH:mm, +-HHmm ou Z

O formato de data de saída do eixo

O formato de data de saída padrão é YYYY-MM-DD. Você pode personalizar o axisFormat, por exemplo, 2026-Q1 representa o primeiro trimestre de 2026.

                            
Copiar
Incorporar
axisFormat %Y-%m-%d

Há suporte às seguintes strings de formato:

Formato,Definição
%a Nome abreviado do dia da semana
%A Nome completo do dia da semana
%b Nome abreviado do mês
%B Nome completo do mês
%c Data e hora localizadas
%d Data, número decimal [01,31]
%e Data, número decimal preenchido com espaços [1,31], equivalente a %_d
%H Hora (formato 24 horas), número decimal [00,23]
%I Hora (formato 12 horas), número decimal [01,12]
%j Dia do ano, número decimal [001,366]
%m Mês, número decimal [01,12]
%M Minuto, número decimal [00,59]
%L Milissegundo, número decimal [000, 999]
%p AM ou PM
%S Segundo, número decimal [00,59]
%U Semana do ano (com domingo como primeiro dia da semana), número decimal [00,53]
%w Dia da semana, número decimal preenchido com espaços [0,6], em que 0 representa domingo
%W Semana do ano (com segunda-feira como primeiro dia da semana), número decimal [00,53]
%x Representação de data localizada, como: 2026-09-18
%X Representação de hora localizada, como: 14:30:00
%y Ano sem século, número decimal [00,99], por exemplo, 26 representa o ano 2026
%Y Ano com século, número decimal
%Z Abreviatura do nome do fuso horário, por exemplo "-0700"
%% Caractere de escape, usado para exibir o próprio sinal de porcentagem %

Escala do eixo

A escala de saída padrão é automática. Você pode personalizar o tickInterval, por exemplo, 1day ou 1week.

                            
Copiar
Incorporar
tickInterval 1day

O padrão é

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

O tickInterval baseado em semana começa, por padrão, no domingo. Se você quiser especificar outro dia da semana como início do tickInterval, use a opção weekday, conforme o código:

Código
                            
Copiar
Incorporar
gantt tickInterval 1week weekday monday

Saída em modo compacto

O modo compacto permite exibir várias tarefas na mesma linha. Defina o modo de exibição do gráfico com a configuração YAML anterior para ativar o modo compacto no diagrama de Gantt.

Código
                            
Copiar
Incorporar
--- 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

É possível inserir comentários em um diagrama de Gantt; o analisador irá ignorá-los. Os comentários precisam ocupar uma linha própria e devem começar com %% (dois sinais de porcentagem). Qualquer texto desde o início do comentário até a próxima quebra de linha será considerado comentário, incluindo qualquer sintaxe de diagrama.

Código
                            
Copiar
Incorporar
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

Marcação de hoje

Você pode definir o estilo da marcação da data atual ou ocultá-la. Para definir o estilo, adicione um valor à chave todayMarker.

                            
Copiar
Incorporar
todayMarker stroke-width:5px,stroke:#0f0,opacity:0.5

Para ocultar a marcação, defina todayMarker como off.

                            
Copiar
Incorporar
todayMarker off

Exemplo

Diagrama de Gantt de barras

Código
                            
Copiar
Incorporar
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

Linha do tempo (com comentários, CSS e configuração de frontmatter)

Código
                            
Copiar
Incorporar
--- # 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