Процесс Тип
Графическое выражение
Мышление Тип
Структурированное выражение
Заметки Тип
Эффективное выражение

Диаграмма ГантаСинтаксис

Диаграмма Ганта

Диаграмма Ганта — это столбчатая диаграмма, используемая для отображения хода проекта и времени, необходимого для завершения проекта. Диаграмма Ганта показывает количество дней между датами начала и завершения конечных и сводных элементов проекта.

Примечания

Диаграмма Ганта записывает каждую запланированную задачу как непрерывную полосу, простирающуюся слева направо. Ось x представляет время, ось y фиксирует различные задачи и порядок их выполнения.

Что ещё важнее, когда даты, дни или определённый набор дат задачи исключаются, диаграмма Ганта приспосабливается к этим изменениям, продлевая полосу вправо на то же количество дней, а не создавая разрыв внутри задачи .

Код
                            
Копировать
Встраивание
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

Однако если исключённые даты находятся между двумя последовательно начинающимися задачами, исключённые даты будут пропущены и оставлены пустыми на диаграмме, после чего задача начнётся после окончания исключённых дат. Как показано ниже:

Код
                            
Копировать
Встраивание
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

Диаграмма Ганта полезна для отслеживания времени, необходимого для завершения проекта, но с некоторыми корректировками её также можно использовать для графического представления «нерабочих дней».

Синтаксис

Код
                            
Копировать
Встраивание
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

Задачи по умолчанию выполняются последовательно, датой начала следующей задачи по умолчанию считается дата завершения предыдущей.

Заголовок задачи и её метаданные разделяются двоеточием (:), а элементы метаданных разделяются запятыми (,). Допустимые теги включают active, done, crit и milestone. Теги необязательны, но если используются, должны стоять в самом начале. После обработки тегов остальные элементы метаданных интерпретируются следующим образом:

  • Если указан один элемент, он определяет, когда задача завершается. Это может быть конкретная дата или время либо длительность. Если указана длительность, она прибавляется к дате начала задачи для определения даты завершения задачи с учётом любых исключений.
  • Если указаны два элемента, второй элемент интерпретируется так же, как в предыдущем случае. Первый элемент может задавать явную дату или время начала (формат задаётся dateFormat) либо ссылаться на другую задачу через after <otherTaskID> [[otherTaskID2 [otherTaskID3]]...]. В последнем случае дата начала задачи будет установлена по наиболее поздней дате завершения любой упомянутой задачи.
  • Если указаны три элемента, последние два элемента интерпретируются так же, как в предыдущем случае. Первый элемент обозначает ID задачи и может быть указан с помощью синтаксиса later <taskID>.
Синтаксис метаданных Дата начала Дата завершения ID
<taskID>, <startDate>, <endDate> startdate, интерпретируемая с помощью dateformat endDate, интерпретируемая с помощью dateformat taskID
<taskID>, <startDate>, <length> startdate, интерпретируемая с помощью dateformat Дата начала + length taskID
<taskID>, after <otherTaskId>, <endDate> Дата завершения ранее указанной задачи otherTaskID endDate, интерпретируемая с помощью dateformat taskID
<taskID>, after <otherTaskId>, <length> Дата завершения ранее указанной задачи otherTaskID Дата начала + length taskID
<taskID>, <startDate>, until <otherTaskId> startdate, интерпретируемая с помощью dateformat Дата начала ранее указанной задачи otherTaskID taskID
<taskID>, after <otherTaskId>, until <otherTaskId> Дата завершения ранее указанной задачи otherTaskID Дата начала ранее указанной задачи otherTaskID taskID
<startDate>, <endDate> startdate, интерпретируемая с помощью dateformat 使用 dateformat 解释的 enddate Не применяется
<startDate>, <length> startdate, интерпретируемая с помощью dateformat Дата начала + length Не применяется
after <otherTaskID>, <endDate> Дата завершения ранее указанной задачи otherTaskID 使用 dateformat 解释的 enddate Не применяется
after <otherTaskID>, <length> Дата завершения ранее указанной задачи otherTaskID Дата начала + length Не применяется
<startDate>, until <otherTaskId> startdate, интерпретируемая с помощью dateformat Дата начала ранее указанной задачи otherTaskID Не применяется
after <otherTaskId>, until <otherTaskId> Дата завершения ранее указанной задачи otherTaskID Дата начала ранее указанной задачи otherTaskID Не применяется
<endDate> Дата завершения предыдущей задачи 使用 dateformat 解释的 enddate Не применяется
<length> Дата завершения предыдущей задачи Дата начала + length Не применяется
until <otherTaskId> Дата завершения предыдущей задачи Дата начала ранее указанной задачи otherTaskID Не применяется

Формат длительности

При указании <length> используется число, за которым следует один из следующих суффиксов единиц измерения:

Единица измерения Суффикс Пример
Миллисекунда ms 50ms
Секунда s 30s
Минута m 30m
Час h 4h
День d 7d
Неделя w 3w
Месяц m 2m
Год y 1y

Также поддерживаются десятичные значения (например, 2.5d). Недействительные маркеры длительности (например, 3dX) игнорируются, и задача по умолчанию получает нулевую длительность.

Для простоты в этой таблице не показаны несколько задач, перечисленных с помощью синтаксиса after. Ниже приведён пример:

Код
                            
Копировать
Встраивание
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

Заголовок

title — это необязательная строка, отображаемая в верхней части диаграммы Ганта и описывающая всю диаграмму.

Исключение

excludes — необязательное свойство, принимающее определённые даты (в формате YYYY-MM-DD), день недели (например, "sunday") или "weekends", но нельзя использовать слово "weekdays". Эти даты будут отмечены на диаграмме и исключены из расчёта длительности задачи. Это означает, что если период выполнения задачи содержит исключённые даты, исключённые дни будут добавлены ко времени завершения задачи, чтобы длительность задачи соответствовала указанной в коде.

Выходные

При исключении выходных можно установить выходные на пятницу и субботу или на субботу и воскресенье. По умолчанию выходными являются суббота и воскресенье. Чтобы определить день начала выходных, можно добавить в новой строке необязательное свойство weekend, за которым следует friday или saturday.

Код
                            
Копировать
Встраивание
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

Объявление раздела

Вы можете разделить диаграмму на разделы, отделив различные части проекта (например, разработку и документацию).

Для этого используйте синтаксис section в начале строки и задайте ему имя. Обратите внимание, что, в отличие от заголовка всей диаграммы, это имя обязательно.

Веха

Вы можете добавлять вехи на диаграмму. Вехи отличаются от задач тем, что представляют собой конкретный момент времени и обозначаются синтаксисом milestone. Ниже приведён пример использования вех: точное положение вехи определяется датой начала вехи и длительностью задачи, как показано ниже:

Код
                            
Копировать
Встраивание
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

Вертикальная отметка

vert обозначает добавление вертикальной линии в диаграмму Ганта, чтобы легко выделять важные даты, например сроки, важные события или контрольные точки. Эти отметки простираются по всей диаграмме и позиционируются в соответствии с указанной вами датой. В отличие от вех, вертикальные отметки не занимают строку. Они являются чисто визуальными ориентирами, помогающими разбить временную шкалу и сделать важные моменты более заметными.

Код
                            
Копировать
Встраивание
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

Настройка даты

dateFormat определяет формат ввода дат для элементов диаграммы Ганта, axisFormat определяет формат вывода дат при рендеринге диаграммы.

Формат входной даты

Формат входной даты по умолчанию — YYYY-MM-DD; вы можете настроить dateFormat.

                            
Копировать
Встраивание
dateFormat YYYY-MM-DD

Поддерживаются следующие параметры формата:

输入 Пример Описание
YYYY 2026 Год из 4 цифр
YY 26 Год из 2 цифр
Q 1..4 Номер квартала
M MM 1..12 Номер месяца
D DD 1..31 День месяца
Do 1st..31st День месяца с порядковым числительным
DDD DDDD 1..365 День года
X 1410715640.579 Временная метка Unix
x 1410715640579 Временная метка Unix в миллисекундах
H HH 0..23 Время в 24-часовом формате
h hh 1..12 Время в 12-часовом формате, используется вместе с a A
a A am pm До полудня или после полудня
m mm 0..59 Минута
s ss 0..59 Секунды
S 0..9 Десятая доля секунды
SS 0..99 Сотая доля секунды
SSS 0..999 Тысячная доля секунды
Z ZZ +12:00 Смещение относительно UTC в формате +-HH:mm, +-HHmm или Z

Формат вывода даты оси

Формат выходной даты по умолчанию — YYYY-MM-DD. Вы можете настроить axisFormat, например 2026-Q1 обозначает первый квартал 2026 года.

                            
Копировать
Встраивание
axisFormat %Y-%m-%d

Поддерживаются следующие строки формата:

Формат,Определение
%a Сокращённое название дня недели
%A Полное название дня недели
%b Сокращённое название месяца
%B Полное название месяца
%c Локализованные дата и время
%d Дата, десятичное число [01,31]
%e Дата, десятичное число, дополненное пробелами [1,31], эквивалентно %_d
%H Час (24-часовой формат), десятичное число [00,23]
%I Час (12-часовой формат), десятичное число [01,12]
%j День года, десятичное число [001,366]
%m Месяц, десятичное число [01,12]
%M Минуты, десятичное число [00,59]
%L Миллисекунды, десятичное число [000, 999]
%p До полудня или после полудня
%S Секунды, десятичное число [00,59]
%U Номер недели в году (первый день недели — воскресенье), десятичное число [00,53]
%w День недели, десятичное число, дополненное пробелами [0,6], где 0 обозначает воскресенье
%W Номер недели в году (первый день недели — понедельник), десятичное число [00,53]
%x Локализованное представление даты, например: 2026-09-18
%X Локализованное представление времени, например: 14:30:00
%y Год без века, десятичное число [00,99], например 26 обозначает 2026 год
%Y Год с веком, десятичное число
%Z Аббревиатура названия часового пояса, например "-0700"
%% Экранирующий символ для отображения самого знака процента %

Деления оси

Деления вывода по умолчанию — автоматические. Вы можете настроить tickInterval, например 1day или 1week.

                            
Копировать
Встраивание
tickInterval 1day

Шаблон таков:

                            
Копировать
Встраивание
/^([1-9][0-9]*)(millisecond|second|minute|hour|day|week|month)$/;

tickInterval на основе недели по умолчанию начинается с воскресенья. Если вы хотите указать другой день недели, с которого начинается tickInterval, используйте параметр weekday, как в следующем коде:

Код
                            
Копировать
Встраивание
gantt tickInterval 1week weekday monday

Вывод в компактном режиме

Компактный режим позволяет отображать несколько задач в одной строке. Режим отображения диаграммы управляется предыдущей настройкой YAML, которая включает компактный режим для диаграммы Ганта.

Код
                            
Копировать
Встраивание
--- 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

В диаграмму Ганта можно вводить комментарии, которые парсер игнорирует. Комментарий должен занимать отдельную строку и начинаться с %% (двойного знака процента). Любой текст от начала комментария до следующего символа перевода строки считается комментарием, включая любой синтаксис диаграммы.

Код
                            
Копировать
Встраивание
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

Отметка сегодняшнего дня

Вы можете задать стиль для отметки текущей даты или скрыть эту отметку. Чтобы задать стиль, добавьте значение для ключа todayMarker.

                            
Копировать
Встраивание
todayMarker stroke-width:5px,stroke:#0f0,opacity:0.5

Чтобы скрыть отметку, установите todayMarker в off.

                            
Копировать
Встраивание
todayMarker off

Пример

Столбчатая диаграмма Ганта

Код
                            
Копировать
Встраивание
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

Временная шкала (включая комментарии, CSS и конфигурацию frontmatter)

Код
                            
Копировать
Встраивание
--- # 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