Prozess Typ
Grafischer Ausdruck
Denken Typ
Strukturierter Ausdruck
Notizen Typ
Effizienter Ausdruck

Gantt-DiagrammSyntax

Gantt-Diagramm

Ein Gantt-Diagramm ist ein Balkendiagramm, das den Projektfortschritt und die für den Abschluss eines Projekts benötigte Zeit darstellt. Ein Gantt-Diagramm zeigt die Anzahl der Tage zwischen Start- und Enddatum von End- und Sammellementen eines Projekts.

Hinweise

Ein Gantt-Diagramm zeichnet jede geplante Aufgabe als durchgehenden Balken auf, der sich von links nach rechts erstreckt. Die x-Achse repräsentiert die Zeit, die y-Achse erfasst die verschiedenen Aufgaben und ihre Reihenfolge der Fertigstellung.

Wichtiger ist, dass das Gantt-Diagramm, wenn Daten, Tage oder eine bestimmte Menge von Daten einer Aufgabe ausgeschlossen werden, diese Änderungen ausgleicht, indem es um dieselbe Anzahl von Tagen nach rechts verlängert, anstatt Lücken innerhalb der Aufgabe zu erzeugen .

Code
                            
Kopieren
Einbetten
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

Wenn die ausgeschlossenen Daten jedoch zwischen zwei aufeinanderfolgend beginnenden Aufgaben liegen, werden die ausgeschlossenen Daten im Diagramm übersprungen und leer gelassen, und anschließend beginnt die Aufgabe nach dem Ende der ausgeschlossenen Daten. Wie unten gezeigt:

Code
                            
Kopieren
Einbetten
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-Diagramme sind nützlich, um die für die Fertigstellung eines Projekts benötigte Zeit zu verfolgen, können aber mit einigen Anpassungen auch verwendet werden, um "arbeitsfreie Tage" grafisch darzustellen.

Syntax

Code
                            
Kopieren
Einbetten
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

Aufgaben laufen standardmäßig fortlaufend; das Startdatum der nächsten Aufgabe ist standardmäßig das Enddatum der vorherigen Aufgabe.

Der Aufgabentitel und seine Metadaten werden durch einen Doppelpunkt (:) getrennt, die Metadateneinträge durch Kommas (,). Gültige Tags sind active, done, crit und milestone. Tags sind optional, müssen aber, wenn sie verwendet werden, an erster Stelle stehen. Nach der Verarbeitung der Tags werden die verbleibenden Metadateneinträge wie folgt interpretiert:

  • Wenn ein einzelnes Element angegeben wird, bestimmt es, wann die Aufgabe endet. Es kann ein konkretes Datum oder eine Uhrzeit oder eine Dauer sein. Wenn eine Dauer angegeben wird, wird sie zum Startdatum der Aufgabe addiert, um das Enddatum der Aufgabe zu bestimmen, wobei etwaige Ausschlüsse berücksichtigt werden.
  • Wenn zwei Elemente angegeben werden, wird das letztere Element genauso interpretiert wie im vorherigen Fall. Das erste Element kann ein explizites Startdatum oder eine Uhrzeit angeben (Format durch dateFormat festgelegt) oder über after <otherTaskID> [[otherTaskID2 [otherTaskID3]]...] auf eine andere Aufgabe verweisen. Im letzteren Fall wird das Startdatum der Aufgabe anhand des spätesten Enddatums aller referenzierten Aufgaben festgelegt.
  • Wenn drei Elemente angegeben werden, werden die letzten beiden Elemente wie in den vorherigen Fällen interpretiert. Das erste Element gibt die ID der Aufgabe an und kann mit der Syntax later <taskID> referenziert werden.
Metadaten-Syntax Startdatum Enddatum ID
<taskID>, <startDate>, <endDate> Mit dateformat interpretiertes startdate Mit dateformat interpretiertes endDate taskID
<taskID>, <startDate>, <length> Mit dateformat interpretiertes startdate Startdatum + length taskID
<taskID>, after <otherTaskId>, <endDate> Das Enddatum der zuvor angegebenen Aufgabe otherTaskID Mit dateformat interpretiertes endDate taskID
<taskID>, after <otherTaskId>, <length> Das Enddatum der zuvor angegebenen Aufgabe otherTaskID Startdatum + length taskID
<taskID>, <startDate>, until <otherTaskId> Mit dateformat interpretiertes startdate Das Startdatum der zuvor angegebenen Aufgabe otherTaskID taskID
<taskID>, after <otherTaskId>, until <otherTaskId> Das Enddatum der zuvor angegebenen Aufgabe otherTaskID Das Startdatum der zuvor angegebenen Aufgabe otherTaskID taskID
<startDate>, <endDate> Mit dateformat interpretiertes startdate 使用 dateformat 解释的 enddate Nicht zutreffend
<startDate>, <length> Mit dateformat interpretiertes startdate Startdatum + length Nicht zutreffend
after <otherTaskID>, <endDate> Das Enddatum der zuvor angegebenen Aufgabe otherTaskID 使用 dateformat 解释的 enddate Nicht zutreffend
after <otherTaskID>, <length> Das Enddatum der zuvor angegebenen Aufgabe otherTaskID Startdatum + length Nicht zutreffend
<startDate>, until <otherTaskId> Mit dateformat interpretiertes startdate Das Startdatum der zuvor angegebenen Aufgabe otherTaskID Nicht zutreffend
after <otherTaskId>, until <otherTaskId> Das Enddatum der zuvor angegebenen Aufgabe otherTaskID Das Startdatum der zuvor angegebenen Aufgabe otherTaskID Nicht zutreffend
<endDate> Das Enddatum der vorherigen Aufgabe 使用 dateformat 解释的 enddate Nicht zutreffend
<length> Das Enddatum der vorherigen Aufgabe Startdatum + length Nicht zutreffend
until <otherTaskId> Das Enddatum der vorherigen Aufgabe Das Startdatum der zuvor angegebenen Aufgabe otherTaskID Nicht zutreffend

Format der Dauer

Bei der Angabe von <length> verwendest du eine Zahl, gefolgt von einem der folgenden Einheitssuffixe:

Einheit Suffix Beispiel
Millisekunde ms 50ms
Sekunde s 30s
Minute m 30m
Stunde h 4h
Tag d 7d
Woche w 3w
Monat m 2m
Jahr y 1y

Dezimalwerte werden ebenfalls unterstützt (z. B. 2.5d). Ungültige Dauer-Markierungen (z. B. 3dX) werden ignoriert, und die Aufgabe erhält standardmäßig eine Dauer von null.

Der Einfachheit halber zeigt die Tabelle keine mehreren Aufgaben, die mit der after-Syntax aufgelistet werden. Im Folgenden findest du Beispiele:

Code
                            
Kopieren
Einbetten
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

Titel

title ist eine optionale Zeichenkette, die oben im Gantt-Diagramm angezeigt wird und das gesamte Diagramm beschreibt.

Ausschließen

excludes ist eine optionale Eigenschaft, die bestimmte Daten (Format YYYY-MM-DD), Wochentage (z. B. "sunday") oder "weekends" akzeptiert, aber nicht das Wort "weekdays" verwenden kann. Diese Daten werden im Diagramm markiert und von der Berechnung der Aufgabendauer ausgeschlossen. Das bedeutet, dass, wenn der Dauerzeitraum einer Aufgabe ausgeschlossene Daten enthält, die ausgeschlossenen Tage zum Endzeitpunkt der Aufgabe addiert werden, um sicherzustellen, dass die Dauer der Aufgabe mit der im Code angegebenen übereinstimmt.

Wochenende

Beim Ausschließen von Wochenenden kannst du das Wochenende auf Freitag und Samstag oder Samstag und Sonntag festlegen. Standardmäßig ist das Wochenende Samstag und Sonntag. Um den Wochenendbeginn festzulegen, kannst du in einer neuen Zeile eine optionale Eigenschaft weekend hinzufügen, gefolgt von friday oder saturday.

Code
                            
Kopieren
Einbetten
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

Abschnittsdeklaration

Du kannst das Diagramm in Abschnitte unterteilen, um verschiedene Teile des Projekts (z. B. Entwicklung und Dokumentation) zu trennen.

Verwende dazu am Anfang einer Zeile die section-Syntax und gib ihr einen Namen. Beachte, dass dieser Name im Gegensatz zum Titel des gesamten Diagramms erforderlich ist.

Meilenstein

Du kannst Meilensteine zum Diagramm hinzufügen. Meilensteine unterscheiden sich von Aufgaben, da sie einen konkreten Zeitpunkt repräsentieren und durch die milestone-Syntax gekennzeichnet werden. Im Folgenden findest du ein Beispiel für die Verwendung von Meilensteinen: Die genaue Position des Meilensteins wird durch das Startdatum des Meilensteins und die Dauer der Aufgabe bestimmt, wie unten gezeigt:

Code
                            
Kopieren
Einbetten
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

Vertikale Markierung

vert bedeutet, im Gantt-Diagramm eine vertikale Linie hinzuzufügen, um wichtige Daten wie Deadlines, wichtige Ereignisse oder Prüfpunkte einfach hervorzuheben. Diese Markierungen erstrecken sich über das gesamte Diagramm und werden anhand des von dir angegebenen Datums positioniert. Im Gegensatz zu Meilensteinen belegen vertikale Markierungen keine Zeile. Sie sind reine visuelle Referenzpunkte, die helfen, die Zeitachse zu unterteilen und wichtige Zeitpunkte leichter erkennbar zu machen.

Code
                            
Kopieren
Einbetten
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

Datum festlegen

dateFormat definiert das Datumseingabeformat für Gantt-Diagramm-Elemente, axisFormat definiert das Datumsausgabeformat beim Rendern des Diagramms.

Eingabedatumsformat

Das Standard-Eingabedatumsformat ist YYYY-MM-DD; du kannst dateFormat anpassen.

                            
Kopieren
Einbetten
dateFormat YYYY-MM-DD

Die folgenden Formatoptionen werden unterstützt:

输入 Beispiel Beschreibung
YYYY 2026 Vierstelliges Jahr
YY 26 Zweistelliges Jahr
Q 1..4 Quartalszahl
M MM 1..12 Monatszahl
D DD 1..31 Ein Tag im Monat
Do 1st..31st Ein Tag im Monat mit Ordnungszahl
DDD DDDD 1..365 Ein Tag im Jahr
X 1410715640.579 Unix-Zeitstempel
x 1410715640579 Unix-Zeitstempel in Millisekunden
H HH 0..23 24-Stunden-Zeit
h hh 1..12 12-Stunden-Zeit, in Verbindung mit a A
a A am pm Vormittag oder Nachmittag
m mm 0..59 Minute
s ss 0..59 Sekunden
S 0..9 Zehntelsekunde
SS 0..99 Hundertstelsekunde
SSS 0..999 Tausendstelsekunde
Z ZZ +12:00 Der Versatz zu UTC, im Format +-HH:mm, +-HHmm oder Z

Das Ausgabedatumsformat der Achse

Das Standard-Ausgabedatumsformat ist YYYY-MM-DD. Du kannst axisFormat anpassen, zum Beispiel bedeutet 2026-Q1 das erste Quartal des Jahres 2026.

                            
Kopieren
Einbetten
axisFormat %Y-%m-%d

Die folgenden Formatzeichenketten werden unterstützt:

Format,Definition
%a Kurzname des Wochentags
%A Vollständiger Name des Wochentags
%b Kurzname des Monats
%B Vollständiger Name des Monats
%c Lokalisiertes Datum und Uhrzeit
%d Datum, Dezimalzahl [01,31]
%e Datum, mit Leerzeichen aufgefüllte Dezimalzahl [1,31], entspricht %_d
%H Stunde (24-Stunden-Format), Dezimalzahl [00,23]
%I Stunde (12-Stunden-Format), Dezimalzahl [01,12]
%j Der wievielte Tag im Jahr, Dezimalzahl [001,366]
%m Monat, Dezimalzahl [01,12]
%M Minute, Dezimalzahl [00,59]
%L Millisekunde, Dezimalzahl [000, 999]
%p Vormittag oder Nachmittag
%S Sekunde, Dezimalzahl [00,59]
%U Die wievielte Woche im Jahr (mit Sonntag als erstem Wochentag), Dezimalzahl [00,53]
%w Wochentag, mit Leerzeichen aufgefüllte Dezimalzahl [0,6], wobei 0 für Sonntag steht
%W Die wievielte Woche im Jahr (mit Montag als erstem Wochentag), Dezimalzahl [00,53]
%x Lokalisierte Datumsdarstellung, z. B.: 2026-09-18
%X Lokalisierte Zeitdarstellung, z. B.: 14:30:00
%y Jahr ohne Jahrhundert, Dezimalzahl [00,99], z. B. steht 26 für das Jahr 2026
%Y Jahr mit Jahrhundert, Dezimalzahl
%Z Abkürzung des Zeitzonennamens, z. B. "-0700"
%% Escape-Zeichen, um das Prozentzeichen % selbst anzuzeigen

Achsenteilung

Die Standardausgabe-Skalenstriche sind automatisch. Du kannst tickInterval anpassen, zum Beispiel 1day oder 1week.

                            
Kopieren
Einbetten
tickInterval 1day

Das Muster ist

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

Wochenbasierte tickInterval beginnt standardmäßig am Sonntag. Wenn du einen anderen Wochentag als Beginn der tickInterval angeben möchtest, verwende die weekday-Option, wie im folgenden Code:

Code
                            
Kopieren
Einbetten
gantt tickInterval 1week weekday monday

Ausgabe im Kompaktmodus

Der Kompaktmodus ermöglicht es dir, mehrere Aufgaben in derselben Zeile anzuzeigen. Über die vorangehende YAML-Einstellung wird der Anzeigemodus des Diagramms gesteuert, um den Kompaktmodus für das Gantt-Diagramm zu aktivieren.

Code
                            
Kopieren
Einbetten
--- 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

In einem Gantt-Diagramm können Kommentare eingegeben werden, die der Parser ignoriert. Ein Kommentar muss eine eigene Zeile einnehmen und mit %% (doppeltes Prozentzeichen) beginnen. Jeder Text vom Kommentarbeginn bis zum nächsten Zeilenumbruch wird als Kommentar betrachtet, einschließlich jeglicher Diagrammsyntax.

Code
                            
Kopieren
Einbetten
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

Heute-Markierung

Du kannst die Markierung für das aktuelle Datum gestalten oder ausblenden. Um sie zu gestalten, füge einen Wert für den Schlüssel todayMarker hinzu.

                            
Kopieren
Einbetten
todayMarker stroke-width:5px,stroke:#0f0,opacity:0.5

Um die Markierung auszublenden, setze todayMarker auf off.

                            
Kopieren
Einbetten
todayMarker off

Beispiel

Balken-Gantt-Diagramm

Code
                            
Kopieren
Einbetten
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

Zeitachse (einschließlich Kommentaren, CSS und Frontmatter-Konfiguration)

Code
                            
Kopieren
Einbetten
--- # 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