ลงทะเบียน
ชั้นเรียนกระบวนการ
การแสดงออกทางกราฟิก
การคิด
การแสดงออกที่มีโครงสร้าง
หมายเหตุ
การแสดงออกอย่างมีประสิทธิภาพ

แผนภูมิแกนต์ไวยากรณ์

แผนภูมิแกนต์

แผนภูมิแกนต์เป็นแผนภูมิแท่งที่ใช้แสดงความคืบหน้าของโครงการและเวลาที่ต้องใช้ในการทำโครงการหนึ่งให้สำเร็จ แผนภูมิแกนต์แสดงจำนวนวันระหว่างวันที่เริ่มต้นและวันที่สิ้นสุดขององค์ประกอบปลายทางและองค์ประกอบสรุปของโครงการ

ข้อควรระวัง

แผนภูมิแกนต์บันทึกงานที่วางแผนไว้แต่ละงานเป็นแท่งต่อเนื่องที่ทอดยาวจากซ้ายไปขวา แกน 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)

คุณสามารถเพิ่มเหตุการณ์สำคัญ (milestone) ลงในแผนภาพได้ เหตุการณ์สำคัญแตกต่างจากงานเพราะมันแทนเวลาที่เจาะจง และถูกระบุด้วยไวยากรณ์ 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 timestamp
x 1410715640579 Unix timestamp หน่วยมิลลิวินาที
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 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