Proses Taip
Ekspresi grafik
Berfikir Taip
Ekspresi berstruktur
Nota Taip
Ekspresi yang cekap

Carta GanttSintaks

Carta Gantt

Carta Gantt ialah sejenis carta bar, digunakan untuk memaparkan kemajuan projek serta masa yang diperlukan untuk menyiapkan sesuatu projek. Carta Gantt menunjukkan bilangan hari antara tarikh mula dan tarikh siap bagi elemen terminal dan elemen ringkasan projek.

Perkara yang perlu diberi perhatian

Carta Gantt merekodkan setiap tugasan yang dirancang sebagai bar berterusan yang memanjang dari kiri ke kanan. Paksi-x mewakili masa, paksi-y merekodkan tugasan berbeza dan susunan penyiapannya.

Lebih penting lagi, apabila tarikh, bilangan hari atau set tarikh tertentu bagi sesuatu tugasan dikecualikan, carta Gantt akan menyesuaikan perubahan ini dengan memanjangkan bilangan hari yang sama ke kanan, bukannya mencipta jurang dalam tugasan.

Kod
                            
Salin
Benamkan
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

Walau bagaimanapun, jika tarikh yang dikecualikan berada antara dua tugasan yang bermula berturut-turut, tarikh yang dikecualikan akan dilangkau dan dibiarkan kosong pada carta, kemudian tugasan akan bermula selepas tarikh yang dikecualikan tamat. Seperti yang ditunjukkan di bawah:

Kod
                            
Salin
Benamkan
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

Carta Gantt berguna untuk menjejak masa yang diperlukan untuk menyiapkan projek, tetapi dengan beberapa pelarasan, ia juga boleh digunakan untuk mewakili "hari bukan bekerja" secara grafik.

Sintaks

Kod
                            
Salin
Benamkan
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

Tugasan secara lalai dijalankan secara berturut-turut; tarikh mula tugasan seterusnya secara lalai ialah tarikh tamat tugasan sebelumnya.

Tajuk tugasan dan metadatanya dipisahkan dengan titik bertindih (:), manakala item metadata dipisahkan dengan koma (,). Label yang sah termasuk active, done, crit dan milestone. Label adalah pilihan, tetapi jika digunakan, mesti diletakkan di hadapan. Selepas label diproses, item metadata yang selebihnya ditafsirkan seperti berikut:

  • Jika satu item ditentukan, ia akan menentukan bila tugasan tamat. Ia boleh jadi tarikh atau masa tertentu, atau tempoh masa. Jika tempoh masa ditentukan, ia akan ditambah pada tarikh mula tugasan untuk menentukan tarikh tamat tugasan, sambil mengambil kira sebarang pengecualian.
  • Jika dua item ditentukan, item yang terakhir ditafsirkan dengan cara yang sama seperti kes sebelumnya. Item pertama boleh menentukan tarikh atau masa mula yang jelas (format ditentukan oleh dateFormat), atau boleh merujuk tugasan lain melalui after <otherTaskID> [[otherTaskID2 [otherTaskID3]]...]. Dalam kes terakhir, tarikh mula tugasan akan ditetapkan berdasarkan tarikh tamat terkini tugasan yang dirujuk.
  • Jika tiga item ditentukan, dua item terakhir akan ditafsirkan mengikut kes sebelumnya. Item pertama akan mewakili ID tugasan, dan boleh dirujuk menggunakan sintaks later <taskID>.
Sintaks metadata Tarikh mula Tarikh tamat ID
<taskID>, <startDate>, <endDate> startdate yang ditafsirkan menggunakan dateformat endDate yang ditafsirkan menggunakan dateformat taskID
<taskID>, <startDate>, <length> startdate yang ditafsirkan menggunakan dateformat Tarikh mula + length taskID
<taskID>, after <otherTaskId>, <endDate> Tarikh tamat tugasan otherTaskID yang ditentukan sebelum ini endDate yang ditafsirkan menggunakan dateformat taskID
<taskID>, after <otherTaskId>, <length> Tarikh tamat tugasan otherTaskID yang ditentukan sebelum ini Tarikh mula + length taskID
<taskID>, <startDate>, until <otherTaskId> startdate yang ditafsirkan menggunakan dateformat Tarikh mula tugasan otherTaskID yang ditentukan sebelum ini taskID
<taskID>, after <otherTaskId>, until <otherTaskId> Tarikh tamat tugasan otherTaskID yang ditentukan sebelum ini Tarikh mula tugasan otherTaskID yang ditentukan sebelum ini taskID
<startDate>, <endDate> startdate yang ditafsirkan menggunakan dateformat 使用 dateformat 解释的 enddate Tidak berkenaan
<startDate>, <length> startdate yang ditafsirkan menggunakan dateformat Tarikh mula + length Tidak berkenaan
after <otherTaskID>, <endDate> Tarikh tamat tugasan otherTaskID yang ditentukan sebelum ini 使用 dateformat 解释的 enddate Tidak berkenaan
after <otherTaskID>, <length> Tarikh tamat tugasan otherTaskID yang ditentukan sebelum ini Tarikh mula + length Tidak berkenaan
<startDate>, until <otherTaskId> startdate yang ditafsirkan menggunakan dateformat Tarikh mula tugasan otherTaskID yang ditentukan sebelum ini Tidak berkenaan
after <otherTaskId>, until <otherTaskId> Tarikh tamat tugasan otherTaskID yang ditentukan sebelum ini Tarikh mula tugasan otherTaskID yang ditentukan sebelum ini Tidak berkenaan
<endDate> Tarikh tamat tugasan sebelumnya 使用 dateformat 解释的 enddate Tidak berkenaan
<length> Tarikh tamat tugasan sebelumnya Tarikh mula + length Tidak berkenaan
until <otherTaskId> Tarikh tamat tugasan sebelumnya Tarikh mula tugasan otherTaskID yang ditentukan sebelum ini Tidak berkenaan

Format tempoh masa

Semasa menentukan <length>, gunakan satu nombor, diikuti dengan salah satu akhiran unit berikut:

Unit Akhiran Contoh
Milisaat ms 50ms
Saat s 30s
Minit m 30m
Jam h 4h
Hari d 7d
Minggu w 3w
Bulan m 2m
Tahun y 1y

Nilai perpuluhan juga disokong (contohnya, 2.5d). Penanda tempoh masa yang tidak sah (contohnya, 3dX) akan diabaikan, dan tugasan akan menggunakan tempoh masa lalai sifar.

Untuk memudahkan, jadual ini tidak menunjukkan berbilang tugasan yang disenaraikan menggunakan sintaks after. Berikut ialah contoh:

Kod
                            
Salin
Benamkan
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

Tajuk

title ialah rentetan pilihan yang dipaparkan di bahagian atas carta Gantt, digunakan untuk menerangkan keseluruhan carta.

Pengecualian

excludes ialah sifat pilihan; ia menerima tarikh tertentu (format YYYY-MM-DD), hari dalam minggu (contohnya "sunday") atau "weekends", tetapi perkataan "weekdays" tidak boleh digunakan. Tarikh ini akan ditandakan pada carta, dan dikecualikan daripada pengiraan tempoh masa tugasan. Ini bermaksud, jika tempoh tugasan merangkumi tarikh yang dikecualikan, bilangan hari yang dikecualikan akan ditambah pada masa tamat tugasan, untuk memastikan tempoh masa tugasan selaras dengan yang ditentukan dalam kod.

Hujung minggu

Semasa mengecualikan hujung minggu, hujung minggu boleh ditetapkan sebagai Jumaat dan Sabtu, atau Sabtu dan Ahad. Secara lalai, hujung minggu ialah Sabtu dan Ahad. Untuk mentakrifkan hari mula hujung minggu, anda boleh menambah sifat pilihan weekend pada baris baharu, diikuti dengan friday atau saturday.

Kod
                            
Salin
Benamkan
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

Pengisytiharan bahagian

Anda boleh membahagikan carta kepada bahagian-bahagian, memisahkan bahagian berbeza projek (contohnya pembangunan dan dokumentasi).

Untuk ini, sila gunakan sintaks section di permulaan baris dan namakannya. Sila ambil perhatian bahawa, berbeza daripada tajuk keseluruhan carta, nama ini adalah wajib.

Peristiwa penting

Anda boleh menambah peristiwa penting pada carta. Peristiwa penting berbeza daripada tugasan kerana ia mewakili masa tertentu, dan dikenal pasti oleh sintaks milestone. Berikut ialah contoh penggunaan peristiwa penting: kedudukan tepat peristiwa penting ditentukan oleh tarikh mula peristiwa penting dan tempoh masa tugasan, seperti yang ditunjukkan di bawah:

Kod
                            
Salin
Benamkan
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

Penanda menegak

vert bermaksud menambah garisan menegak dalam carta Gantt, supaya tarikh penting seperti tarikh akhir, peristiwa penting atau titik pemeriksaan dapat disorot dengan mudah. Penanda ini memanjang ke seluruh carta, dan diletakkan berdasarkan tarikh yang anda berikan. Berbeza daripada peristiwa penting, penanda menegak tidak mengambil satu baris. Ia semata-mata titik rujukan visual, membantu menguraikan garis masa, menjadikan detik penting lebih mudah dikenal pasti.

Kod
                            
Salin
Benamkan
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

Tetapkan tarikh

dateFormat mentakrifkan format input tarikh elemen carta Gantt; axisFormat mentakrifkan format output tarikh semasa memaparkan carta.

Format tarikh input

Format tarikh input lalai ialah YYYY-MM-DD; anda boleh menyesuaikan dateFormat.

                            
Salin
Benamkan
dateFormat YYYY-MM-DD

Pilihan format berikut disokong:

输入 Contoh Penerangan
YYYY 2026 Tahun 4 digit
YY 26 Tahun 2 digit
Q 1..4 Nombor suku tahun
M MM 1..12 Nombor bulan
D DD 1..31 Hari dalam sebulan
Do 1st..31st Hari dalam sebulan dengan nombor ordinal
DDD DDDD 1..365 Hari dalam setahun
X 1410715640.579 Cap masa Unix
x 1410715640579 Cap masa milisaat Unix
H HH 0..23 Masa 24 jam
h hh 1..12 Masa 12 jam, digunakan bersama a A
a A am pm Pagi atau petang
m mm 0..59 Minit
s ss 0..59 Bilangan saat
S 0..9 Persepuluh saat
SS 0..99 Perseratus saat
SSS 0..999 Perseribu saat
Z ZZ +12:00 Anjakan berbanding UTC, formatnya +-HH:mm, +-HHmm atau Z

Format tarikh output paksi

Format tarikh output lalai ialah YYYY-MM-DD. Anda boleh menyesuaikan axisFormat, contohnya 2026-Q1 bermaksud suku pertama tahun 2026.

                            
Salin
Benamkan
axisFormat %Y-%m-%d

Rentetan format berikut disokong:

Format,Definisi
%a Nama singkatan hari dalam minggu
%A Nama penuh hari dalam minggu
%b Nama singkatan bulan
%B Nama penuh bulan
%c Tarikh dan masa setempat
%d Tarikh, nombor perpuluhan [01,31]
%e Tarikh, nombor perpuluhan berlapik ruang [1,31], bersamaan dengan %_d
%H Jam (sistem 24 jam), nombor perpuluhan [00,23]
%I Jam (sistem 12 jam), nombor perpuluhan [01,12]
%j Hari ke-berapa dalam setahun, nombor perpuluhan [001,366]
%m Bulan, nombor perpuluhan [01,12]
%M Minit, nombor perpuluhan [00,59]
%L Milisaat, nombor perpuluhan [000, 999]
%p Pagi atau petang
%S Saat, nombor perpuluhan [00,59]
%U Minggu ke-berapa dalam setahun (dengan hari Ahad sebagai hari pertama minggu), nombor perpuluhan [00,53]
%w Hari dalam minggu, nombor perpuluhan berlapik ruang [0,6], di mana 0 mewakili hari Ahad
%W Minggu ke-berapa dalam setahun (dengan hari Isnin sebagai hari pertama minggu), nombor perpuluhan [00,53]
%x Perwakilan tarikh setempat, contohnya: 2026-09-18
%X Perwakilan masa setempat, contohnya: 14:30:00
%y Tahun tanpa abad, nombor perpuluhan [00,99], contohnya 26 mewakili tahun 2026
%Y Tahun dengan abad, nombor perpuluhan
%Z Singkatan nama zon waktu, contohnya "-0700"
%% Aksara pelepasan, digunakan untuk memaparkan tanda peratus % itu sendiri

Skala paksi

Skala output lalai ialah automatik. Anda boleh menyesuaikan tickInterval, contohnya 1day atau 1week.

                            
Salin
Benamkan
tickInterval 1day

Modenya ialah

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

tickInterval berasaskan minggu bermula dari Ahad secara lalai. Jika anda ingin menentukan hari bekerja lain sebagai permulaan tickInterval, sila gunakan pilihan weekday, kodnya adalah seperti berikut:

Kod
                            
Salin
Benamkan
gantt tickInterval 1week weekday monday

Output mod padat

Mod padat membenarkan anda memaparkan berbilang tugasan dalam baris yang sama. Mod pemaparan graf dikawal melalui tetapan YAML terdahulu, untuk mendayakan mod padat bagi carta Gantt.

Kod
                            
Salin
Benamkan
--- 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

Komen boleh dimasukkan dalam carta Gantt, dan penghurai akan mengabaikannya. Komen perlu menduduki satu baris sendiri, dan mesti bermula dengan %% (dua tanda peratus). Sebarang teks selepas permulaan komen hingga aksara baris baharu seterusnya akan dianggap sebagai komen, termasuk sebarang sintaks carta.

Kod
                            
Salin
Benamkan
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

Penanda hari ini

Anda boleh menetapkan gaya penanda tarikh semasa atau menyembunyikan penanda tersebut. Untuk menetapkan gaya, tambah nilai pada kunci todayMarker.

                            
Salin
Benamkan
todayMarker stroke-width:5px,stroke:#0f0,opacity:0.5

Untuk menyembunyikan penanda, tetapkan todayMarker kepada off.

                            
Salin
Benamkan
todayMarker off

Contoh

Carta Gantt bar

Kod
                            
Salin
Benamkan
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

Garis masa (termasuk komen, CSS dan konfigurasi hadapan)

Kod
                            
Salin
Benamkan
--- # 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