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

แผนผังลำดับงานไวยากรณ์

คำจำกัดความพื้นฐาน

ผังงานประกอบด้วยโหนด (รูปร่างทางเรขาคณิต) และเส้นเชื่อมต่อ (ลูกศรหรือเส้น) โค้ด Mermaid กำหนดวิธีสร้างโหนดและเส้นเชื่อมต่อ และรองรับลูกศรหลายประเภท ลูกศรหลายทิศทาง ตลอดจนการเชื่อมโยงกับกราฟย่อยได้อย่างอิสระ

คำเตือน หากคุณใช้คำว่า "end" ในโหนดผังงาน โปรดเขียนอักษรตัวแรกหรือทั้งคำเป็นตัวพิมพ์ใหญ่ (เช่น "End" หรือ "END") การป้อน "end" เป็นตัวพิมพ์เล็กทั้งหมดจะทำให้ผังงานเกิดข้อผิดพลาด

คำเตือน หากคุณใช้ตัวอักษร "o" หรือ "x" เป็นอักษรตัวแรกเมื่อเชื่อมต่อโหนดผังงาน โปรดเพิ่มช่องว่างหน้าตัวอักษรหรือเขียนตัวอักษรเป็นตัวพิมพ์ใหญ่ (เช่น "dev--- ops", "dev---Ops")

หนึ่งโหนด (ค่าเริ่มต้น)

โค้ด
                            
คัดลอก
ฝัง
--- title: Node --- flowchart LR id
ข้อมูล

id คือเนื้อหาที่แสดงในกล่อง

เคล็ดลับ

ไวยากรณ์การสร้างผังงาน นอกจากใช้ flowchart แล้ว ยังสามารถใช้ graph ได้

โหนดที่มีข้อความ

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

โค้ด
                            
คัดลอก
ฝัง
--- title: Node with text --- flowchart LR id1[This is the text in the box]

ข้อความ Unicode

ใช้เครื่องหมายอัญประกาศคู่ครอบข้อความ Unicode

โค้ด
                            
คัดลอก
ฝัง
flowchart LR id["This ❤ Unicode"]

รูปแบบ Markdown

ใช้เครื่องหมายอัญประกาศคู่และเครื่องหมาย backtick ครอบข้อความ Markdown

โค้ด
                            
คัดลอก
ฝัง
flowchart LR markdown["`This **is** _Markdown_`"] newLines["`Line1 Line 2 Line 3`"] markdown --> newLines

ทิศทาง

ประกาศทิศทางของผังงาน

หมายถึงผังงานจัดเรียงจากบนลงล่าง (TD หรือ TB)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD Start --> Stop

ทิศทางของผังงานประกอบด้วย:

  • TB - จากบนลงล่าง
  • TD - จากบนลงล่าง (เหมือนกับจากบนลงล่าง)
  • BT - จากล่างขึ้นบน
  • RL - จากขวาไปซ้าย
  • LR - จากซ้ายไปขวา

รูปร่างโหนด

สี่เหลี่ยมมุมมน

โค้ด
                            
คัดลอก
ฝัง
flowchart LR id1(This is the text in the box)

รูปร่างสนามกีฬา

โค้ด
                            
คัดลอก
ฝัง
flowchart LR id1([This is the text in the box])

กราฟย่อย

โค้ด
                            
คัดลอก
ฝัง
flowchart LR id1[[This is the text in the box]]

ฐานข้อมูล

โค้ด
                            
คัดลอก
ฝัง
flowchart LR id1[(Database)]

วงกลม

โค้ด
                            
คัดลอก
ฝัง
flowchart LR id1((This is the text in the circle))

รูปร่างไม่สมมาตร

โค้ด
                            
คัดลอก
ฝัง
flowchart LR id1>This is the text in the box]

สี่เหลี่ยมข้าวหลามตัด

โค้ด
                            
คัดลอก
ฝัง
flowchart LR id1{This is the text in the box}

หกเหลี่ยม

โค้ด
                            
คัดลอก
ฝัง
flowchart LR id1{{This is the text in the box}}

สี่เหลี่ยมด้านขนาน

โค้ด
                            
คัดลอก
ฝัง
flowchart TD id1[/This is the text in the box/]

สี่เหลี่ยมด้านขนานกลับด้าน

โค้ด
                            
คัดลอก
ฝัง
flowchart TD id1[\This is the text in the box\]

สี่เหลี่ยมคางหมู

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A[/ProcessOn\]

สี่เหลี่ยมคางหมูกลับด้าน

โค้ด
                            
คัดลอก
ฝัง
flowchart TD B[\ProcessOn/]

วงกลมซ้อน

โค้ด
                            
คัดลอก
ฝัง
flowchart TD id1(((This is the text in the circle)))

การขยายรูปร่างโหนดของผังงาน Mermaid

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

ไวยากรณ์ใหม่สำหรับการกำหนดรูปร่าง

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

                            
คัดลอก
ฝัง
A@{ shape: rect }

ไวยากรณ์นี้สร้างโหนด A เป็นสี่เหลี่ยมมุมฉาก การเรนเดอร์จะเหมือนกับ [A] หรือ A

รายการรูปร่างโหนดฉบับสมบูรณ์

ต่อไปนี้คือรายการฉบับสมบูรณ์ของรูปร่างโหนดที่นำมาใช้ใหม่ พร้อมความหมาย ชื่อย่อ และนามแฝงที่สอดคล้องกัน:

ชื่อเชิงความหมาย ไวยากรณ์กราฟ ชื่อย่อไวยากรณ์ ไวยากรณ์ทางเลือก คำอธิบายโดยละเอียด
การ์ด Notched Rectangle notch-rect card, notched-rectangle แสดงการ์ดหนึ่งใบ
จัดเรียง Hourglass hourglass collate แสดงการดำเนินการจัดเรียง
เส้นเชื่อมต่อการสื่อสาร Lightning Bolt bolt com-link, lightning-bolt เส้นเชื่อมต่อการสื่อสาร
ความคิดเห็น Curly Brace brace brace-l, comment เพิ่มความคิดเห็น
ความคิดเห็นด้านขวา Curly Brace brace-r เพิ่มความคิดเห็น
ความคิดเห็นที่มีวงเล็บปีกกาทั้งสองข้าง Curly Braces braces เพิ่มความคิดเห็น
การป้อนหรือส่งออกข้อมูล Lean Right lean-r in-out, lean-right แสดงการป้อนหรือส่งออก
การป้อนหรือส่งออกข้อมูล Lean Left lean-l lean-left, out-in แสดงการส่งออกหรือการป้อน
ฐานข้อมูล Cylinder cyl cylinder, database, db การจัดเก็บฐานข้อมูล
การตัดสินใจ Diamond diam decision, diamond, question ขั้นตอนการตัดสินใจ
ความล่าช้า Half-Rounded Rectangle delay half-rounded-rectangle แสดงความล่าช้า
หน่วยจัดเก็บแบบเข้าถึงโดยตรง Horizontal Cylinder h-cyl das, horizontal-cylinder หน่วยจัดเก็บแบบเข้าถึงโดยตรง
หน่วยจัดเก็บแบบดิสก์ Lined Cylinder lin-cyl disk, lined-cylinder หน่วยจัดเก็บแบบดิสก์
การแสดงผล Curved Trapezoid curv-trap curved-trapezoid, display แสดงว่าข้อมูลข่าวสารแสดงบนอุปกรณ์ เช่น หน้าจอ เทอร์มินัล เป็นต้น
การประมวลผลแบบแบ่งส่วน Divided Rectangle div-rect div-proc, divided-process, divided-rectangle รูปร่างการประมวลผลแบบแบ่งส่วน
เอกสาร Document doc document แสดงเอกสารหนึ่งชิ้น
เหตุการณ์ Rounded Rectangle rounded event แสดงเหตุการณ์หนึ่งเหตุการณ์
การสกัด Triangle tri extract, triangle กระบวนการสกัด
การแตกแขนง/การรวม Filled Rectangle fork join การแตกแขนงหรือการรวมในผังงาน
หน่วยจัดเก็บภายใน Window Pane win-pane internal-storage, window-pane หน่วยจัดเก็บภายใน
จุดเชื่อมต่อ Filled Circle f-circ filled-circle, junction จุดเชื่อมต่อ
เอกสารที่มีเส้น Lined Document lin-doc lined-document เอกสารที่มีเส้น
กระบวนการแบบมีเส้น/เงา Lined Rectangle lin-rect lin-proc, lined-process, lined-rectangle, shaded-process รูปร่างกระบวนการที่มีเส้น
ขีดจำกัดลูป Trapezoidal Pentagon notch-pent loop-limit, notched-pentagon ขั้นตอนขีดจำกัดลูป
ไฟล์แบบ manual Flipped Triangle flip-tri flipped-triangle, manual-file การดำเนินการไฟล์แบบ manual
การป้อนด้วยมือ Sloped Rectangle sl-rect manual-input, sloped-rectangle ขั้นตอนการป้อนด้วยมือ
การดำเนินการด้วยมือ Trapezoid Base Top trap-t inv-trapezoid, manual, trapezoid-top แสดงงานที่ทำด้วยมือ
หลายเอกสาร Stacked Document docs documents, st-doc, stacked-document 多个文档
หลายโปรเซส Stacked Rectangle st-rect processes, procs, stacked-rectangle 多个进程
รูปร่างไม่สม่ำเสมอ Odd odd รูปร่างไม่สม่ำเสมอ
เทปกระดาษ Flag flag paper-tape เทปกระดาษ
เงื่อนไขการเตรียม Hexagon hex hexagon, prepare ขั้นตอนการเตรียมหรือเงื่อนไข
การกระทำที่มีลำดับความสำคัญ Trapezoid Base Bottom trap-b priority, trapezoid, trapezoid-bottom การกระทำที่มีลำดับความสำคัญ
การประมวลผล Rectangle rect proc, process, rectangle รูปร่างการประมวลผลมาตรฐาน
เริ่มต้น Circle circle circ จุดเริ่มต้น
เริ่มต้น Small Circle sm-circ small-circle, start จุดเริ่มต้นวงกลมเล็ก
หยุด Double Circle dbl-circ double-circle แสดงจุดหยุด
หยุด Framed Circle fr-circ framed-circle, stop แสดงจุดหยุด
จัดเก็บข้อมูล Bow Tie Rectangle bow-rect bow-tie-rectangle, stored-data จัดเก็บข้อมูล
กราฟย่อย Framed Rectangle fr-rect framed-rectangle, subproc, subprocess, subroutine กราฟย่อย, โปรแกรมย่อย
สรุป Crossed Circle cross-circ crossed-circle, summary สรุป
เอกสารที่ติดป้ายกำกับ Tagged Document tag-doc tagged-document เอกสารที่ติดป้ายกำกับ
กระบวนการมาตรฐาน Tagged Rectangle tag-rect tag-proc, tagged-process, tagged-rectangle 已标准进程
จุดสิ้นสุด Stadium stadium pill, terminal จุดสิ้นสุด
บล็อกข้อความ Text Block text บล็อกข้อความ

ต่อไปนี้คือตัวอย่างโค้ดผังงานที่ใช้รูปร่างที่นำมาใช้ใหม่:

โค้ด
                            
คัดลอก
ฝัง
flowchart RL A@{ shape: manual-file, label: "File Handling"} B@{ shape: manual-input, label: "User Input"} C@{ shape: docs, label: "Multiple Documents"} D@{ shape: procs, label: "Process Automation"} E@{ shape: paper-tape, label: "Paper Records"}

โปรเซส

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: rect, label: "This is a process" }

เหตุการณ์

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: rounded, label: "This is an event" }

โปรเซสย่อย

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: subproc, label: "This is a subprocess" }

ฐานข้อมูล (ทรงกระบอก)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: cyl, label: "Database" }

เริ่มต้น (วงกลม)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: circle, label: "Start" }

รูปทรงไม่สม่ำเสมอ

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: odd, label: "Odd shape" }

การตัดสินใจ (สี่เหลี่ยมข้าวหลามตัด)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: diamond, label: "Decision" }

เงื่อนไขการเตรียม (หกเหลี่ยม)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: hex, label: "Prepare conditional" }

การป้อน/ส่งออกข้อมูล (เอียงไปทางขวา)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: lean-r, label: "Input/Output" }

การป้อน/ส่งออกข้อมูล (เอียงไปทางซ้าย)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: lean-l, label: "Input/Output" }

การกระทำที่มีลำดับความสำคัญ (สี่เหลี่ยมคางหมู)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: trap-b, label: "Priority action" }

การดำเนินการด้วยมือ (สี่เหลี่ยมคางหมูกลับด้าน)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: trap-t, label: "Manual operation" }

หยุด (วงกลมซ้อน)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: dbl-circ, label: "Stop" }

บล็อกข้อความ

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: text, label: "This is a text block" }

การ์ด (สี่เหลี่ยมที่มีรอยบาก)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: notch-rect, label: "Card" }

กระบวนการแบบมีเส้น/เงา

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: lin-rect, label: "Lined process" }

เริ่มต้น (วงกลมเล็ก)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: sm-circ, label: "Small start" }

หยุด (วงกลมที่มีกรอบ)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: framed-circle, label: "Stop" }

การแตกแขนง/การรวม (สี่เหลี่ยมยาว)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: fork, label: "Fork or Join" }

จัดเรียง (นาฬิกาทราย)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: hourglass, label: "Collate" }

ความคิดเห็น (วงเล็บปีกกา)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: comment, label: "Comment" }

ความคิดเห็นด้านขวา (วงเล็บปีกกาด้านขวา)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: brace-r, label: "Comment" }

ความคิดเห็น (มีวงเล็บทั้งสองข้าง)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: braces, label: "Comment" }

เส้นเชื่อมต่อการสื่อสาร (สายฟ้า)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: bolt, label: "Communication link" }

เอกสาร

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: doc, label: "Document" }

ความล่าช้า (สี่เหลี่ยมมุมมนครึ่งวง)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: delay, label: "Delay" }

直接存取存储(水平圆柱)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: das, label: "Direct access to storage" }

หน่วยจัดเก็บแบบดิสก์ (ทรงกระบอกมีร่อง)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: lin-cyl, label: "Disk storage" }

การแสดงผล (รูปร่างการแสดงผล)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: curv-trap, label: "Display" }

การประมวลผลแบบแบ่งส่วน (สี่เหลี่ยมแบ่งส่วน)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: div-rect, label: "Divided process" }

การสกัด (สามเหลี่ยมเล็ก)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: tri, label: "Extract" }

หน่วยจัดเก็บภายใน (แผงหน้าต่าง)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: win-pane, label: "Internal storage" }

จุดเชื่อมต่อ (วงกลมทึบ)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: f-circ, label: "Connect" }

เอกสารที่มีเส้น

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: lin-doc, label: "Lined document" }

ขีดจำกัดลูป (ห้าเหลี่ยมมีรอยบาก)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: notch-pent, label: "Loop limit" }

ไฟล์แบบ manual (สามเหลี่ยมพลิก)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: flip-tri, label: "Manual file" }

การป้อนด้วยมือ (สี่เหลี่ยมคางหมูมุมฉาก)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: sl-rect, label: "Manual input" }

หลายเอกสาร (เอกสารซ้อนกัน)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: docs, label: "Multi-document" }

หลายโปรเซส (สี่เหลี่ยมซ้อนกัน)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: processes, label: "Multiple processes" }

เทปกระดาษ (ธง)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: flag, label: "Paper tape" }

จัดเก็บข้อมูล (สี่เหลี่ยมโบว์)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: bow-rect, label: "Data stored" }

สรุป (วงกลมมีกากบาท)

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: cross-circ, label: "Summary" }

เอกสารที่ติดป้ายกำกับ

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: tag-doc, label: "Tagged document" }

กระบวนการที่ทำเครื่องหมาย

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A@{ shape: tag-rect, label: "Tagged process" }

รูปร่างพิเศษในผังงาน Mermaid

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

รูปร่างรูปภาพ

คุณสามารถใช้ image เพื่อแทรกรูปภาพในผังงาน ไวยากรณ์สำหรับกำหนดรูปภาพมีดังนี้:

                            
คัดลอก
ฝัง
flowchart TD A@{ img: "https://www.processon.com/image.png", label: "Image Label", pos: "t", w: 60, h: 60, constraint: "off" }

พารามิเตอร์

  • img: ที่อยู่ URL ของรูปภาพที่ต้องการแสดง
  • label: ป้ายกำกับข้อความที่เชื่อมโยงกับรูปภาพ สามารถเป็นสตริงใดก็ได้ หากไม่ได้กำหนด จะไม่แสดงป้ายกำกับใด ๆ
  • pos: ตำแหน่งของป้ายกำกับ หากไม่ได้กำหนด ป้ายกำกับจะอยู่ที่ด้านล่างของรูปภาพเป็นค่าเริ่มต้น
  • w: ความกว้างของรูปภาพ หากไม่ได้กำหนด จะใช้ความกว้างตามธรรมชาติของรูปภาพเป็นค่าเริ่มต้น
  • h: ความสูงของรูปภาพ หากไม่ได้กำหนด จะใช้ความสูงตามธรรมชาติของรูปภาพเป็นค่าเริ่มต้น
  • constraint: กำหนดว่ารูปภาพจำกัดขนาดของโหนดหรือไม่ การตั้งค่านี้ยังช่วยให้รูปภาพคงอัตราส่วนกว้างยาวเดิม และปรับความสูงตามความกว้าง หากไม่ได้กำหนด จะมีค่าเริ่มต้นเป็น off

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

การเชื่อมต่อระหว่างโหนด

โหนดสามารถเชื่อมต่อกันได้ด้วยเส้นเชื่อมต่อและลูกศร มีลิงก์หลายประเภท และยังสามารถแนบสตริงข้อความกับลิงก์ได้

ลิงก์ที่มีลูกศร

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A-->B

ลิงก์แบบเปิด

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A --- B

ลิงก์ที่มีข้อความ

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A-- This is the text! ---B

หรือ

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A --- | This is the text| B

ลิงก์ที่มีลูกศรและข้อความ

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A-->|text|B

หรือ

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A-- text -->B

ลิงก์เส้นประ

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A-.->B;

ลิงก์เส้นประที่มีข้อความ

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A-. text .->B;

ลิงก์เส้นหนา

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A ==> B

ลิงก์เส้นหนาที่มีข้อความ

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A == |text| ==> B

ลิงก์ที่มองไม่เห็น

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A ~~~ B

การเชื่อมต่อแบบลูกโซ่ของลิงก์

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A -- text --> B -- text2 --> C

ยังสามารถประกาศลิงก์ของโหนดหลายรายการในบรรทัดเดียวกันได้ ดังที่แสดงด้านล่าง:

โค้ด
                            
คัดลอก
ฝัง
flowchart LR a --> b & c--> d

คุณยังสามารถอธิบายการพึ่งพาได้ เช่นเดียวกับโค้ดด้านล่าง:

โค้ด
                            
คัดลอก
ฝัง
flowchart LR a --> b & c--> d & e--> f

หากใช้ไวยากรณ์พื้นฐานเพื่ออธิบายกราฟเดียวกัน จะต้องใช้ 8 บรรทัด ขอเตือนว่า การใช้วิธีนี้มากเกินไปอาจทำให้ผังงานในรูปแบบ Markdown อ่านยากขึ้น

โค้ด
                            
คัดลอก
ฝัง
flowchart TB a --> b a --> c b --> d b --> e c --> d c --> e d --> f e --> f

เพิ่ม ID ให้กับเส้นเชื่อมต่อ

ปัจจุบัน Mermaid รองรับการเพิ่ม ID ให้กับเส้นเชื่อมต่อ คล้ายกับการแนบ ID และเมทาดาทากับโหนด ฟีเจอร์นี้วางรากฐานสำหรับสไตล์ คลาส และฟังก์ชันแอนิเมชันขั้นสูงบนเส้นเชื่อมต่อ

ไวยากรณ์:

หากต้องการเพิ่ม ID ให้กับเส้นเชื่อมต่อ โปรดใส่ ID ไว้หน้าไวยากรณ์ของเส้นเชื่อมต่อ แล้วตามด้วยอักขระ @ ตัวอย่าง:

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A e1@--> B

ในตัวอย่างนี้ e1 คือ ID ของเส้นเชื่อมต่อที่เชื่อม A กับ B คุณสามารถใช้ ID นี้ในคำสั่งนิยามหรือสไตล์ที่ตามมาได้ เช่นเดียวกับการใช้โหนด

เปิดแอนิเมชัน

หลังจากเพิ่ม ID ให้กับเส้นเชื่อมต่อแล้ว คุณสามารถเปิดแอนิเมชันของเส้นเชื่อมต่อได้โดยกำหนดคุณสมบัติของเส้นเชื่อมต่อ:

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A e1@==> B e1@{ animate: true }

สิ่งนี้บอก Mermaid ว่าเส้นเชื่อมต่อ e1 เป็นแอนิเมชัน

เลือกประเภทแอนิเมชัน

ในเวอร์ชันเริ่มต้นรองรับความเร็วแอนิเมชันสองแบบ: fast และ slow การเลือกประเภทแอนิเมชันเฉพาะเป็นวิธีง่าย ๆ ในการเปิดใช้งานแอนิเมชันและตั้งค่าความเร็วในคราวเดียว

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A e1@--> B e1@{ animation: fast }

这相当于 e1@{ animate: true, animation: fast }。

ใช้คำสั่ง classDef ในการทำแอนิเมชัน

คุณยังสามารถเพิ่มแอนิเมชันให้กับเส้นเชื่อมต่อได้โดยกำหนดคลาสให้กับเส้นเชื่อมต่อ แล้วนิยามคุณสมบัติแอนิเมชันในคำสั่ง classDef ตัวอย่าง:

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A e1@--> B classDef animate stroke-dasharray: 9,5,stroke-dashoffset: 900,animation: dash 25s linear infinite; class e1 animate

ในโค้ดนี้:

  • e1@--> 创建了一个 ID 为 e1 的连接线
  • classDef animate นิยามคลาสชื่อ animate พร้อมคุณสมบัติสไตล์และแอนิเมชัน
  • class e1 animate นำคลาส animate ไปใช้กับเส้นเชื่อมต่อ e1

หมายเหตุเกี่ยวกับการหลีกอักขระจุลภาค: เมื่อตั้งค่าคุณสมบัติ stroke-dasharray โปรดจำไว้ว่าต้องหลีกอักขระจุลภาคเป็น , เนื่องจากจุลภาคถูกใช้เป็นตัวคั่นในการกำหนดสไตล์ของ Mermaid

ประเภทลูกศรใหม่

รองรับประเภทลูกศรใหม่

  • เส้นเชื่อมต่อที่มีวงกลมทึบ
  • เส้นเชื่อมต่อที่มีเครื่องหมายกากบาท

เส้นเชื่อมต่อที่มีวงกลมทึบ

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A --o B

เส้นเชื่อมต่อที่มีเครื่องหมายกากบาท

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A --x B

ลูกศรหลายทิศทาง

สามารถใช้ลูกศรหลายทิศทางได้ ตัวอย่าง:

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A o--o B B <--> C C x--x D

ความยาวของเส้นเชื่อมต่อ

โหนดแต่ละโหนดในผังงานจะถูกกำหนดให้อยู่ในระดับหนึ่งในกราฟที่เรนเดอร์ โดยอิงจากโหนดที่เชื่อมต่อด้วย นั่นคือระดับแนวตั้งหรือแนวนอน (ขึ้นอยู่กับทิศทางของผังงาน) โดยค่าเริ่มต้น ลิงก์สามารถข้ามได้กี่ระดับก็ได้ แต่คุณสามารถกำหนดให้การเชื่อมต่อใดยาวกว่าการเชื่อมต่ออื่นได้โดยเพิ่มขีดกลางพิเศษในนิยามการเชื่อมต่อ

ในตัวอย่างนี้ มีการเพิ่มขีดกลางพิเศษสองขีดในการเชื่อมต่อจากโหนด B ไปยังโหนด E ทำให้ข้ามระดับได้มากกว่าลิงก์ทั่วไปสองระดับ:

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A[Start] --> B{Is it?} B -->|Yes| C[OK] C --> D[Rethink] D --> B B ---->|No| E[End]
หมายเหตุ: การเชื่อมต่ออาจยาวกว่าจำนวนระดับที่เรนเจอร์เรนเดอร์ร้องขอ เพื่อรองรับคำขออื่น

เมื่อป้ายกำกับของการเชื่อมต่อเขียนไว้ตรงกลางการเชื่อมต่อ ต้องเพิ่มขีดกลางพิเศษทางด้านขวาของการเชื่อมต่อ ตัวอย่างนี้เทียบเท่ากับตัวอย่างก่อนหน้า:

โค้ด
                            
คัดลอก
ฝัง
flowchart TD A[Start] --> B{Is it?} B -->|Yes| C[OK] C --> D[Rethink] D --> B B -- No ----> E[End]

สำหรับเส้นแบบจุดหรือลิงก์เส้นหนา อักขระที่ต้องเพิ่มคือเครื่องหมายเท่ากับหรือจุด ดังที่แสดงในตารางด้านล่าง:

ความยาว 1 2 3
การเชื่อมต่อทั่วไป --- ---- -----
การเชื่อมต่อทั่วไปที่มีลูกศร --> ---> ---->
การเชื่อมต่อเส้นหนา === ==== =====
การเชื่อมต่อเส้นหนาที่มีลูกศร ==> ===> ====>
เส้นแบบจุด -.- -..- -...-
เส้นแบบจุดที่มีลูกศร -.- -..-> -...->

อักขระพิเศษ

คุณสามารถใส่ข้อความไว้ในเครื่องหมายอัญประกาศเพื่อเรนเดอร์อักขระที่ยุ่งยากกว่าได้ ดังที่แสดงในตัวอย่างด้านล่าง:

โค้ด
                            
คัดลอก
ฝัง
flowchart LR id1["This is the (text) in the box"]

การเข้ารหัสเอนทิตีสำหรับการหลีกอักขระ

สามารถใช้ไวยากรณ์ในตัวอย่างในการหลีกอักขระได้

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A["A double quote:#quot;"] --> B["A dec char:#9829;"]

ตัวเลขที่ให้มาเป็นเลขฐานสิบ ดังนั้น # จึงเข้ารหัสเป็น #35 ได้ และยังรองรับการใช้ชื่ออักขระ HTML ด้วย

กราฟย่อย

                            
คัดลอก
ฝัง
subgraph title graph definition end

ต่อไปนี้คือตัวอย่าง:

โค้ด
                            
คัดลอก
ฝัง
flowchart TB c1-->a2 subgraph one a1-->a2 end subgraph two b1-->b2 end subgraph three c1-->c2 end

คุณยังสามารถตั้งค่า id ให้กับกราฟย่อยได้

โค้ด
                            
คัดลอก
ฝัง
flowchart TB c1-->a2 subgraph ide1 [one] a1-->a2 end

แผนผังลำดับงาน

เมื่อใช้แผนภาพประเภทผังงาน ก็สามารถตั้งค่าเส้นเชื่อมต่อที่ชี้ไปยังและมาจากกราฟย่อยได้เช่นเดียวกับผังงานด้านล่าง

โค้ด
                            
คัดลอก
ฝัง
flowchart TB c1-->a2 subgraph one a1-->a2 end subgraph two b1-->b2 end subgraph three c1-->c2 end one --> two three --> two two --> c2

ทิศทางของกราฟย่อย

เมื่อใช้ประเภทผังงาน คุณสามารถใช้คำสั่งทิศทางเพื่อตั้งค่าทิศทางการเรนเดอร์ของกราฟย่อยได้ ดังที่แสดงด้านล่าง:

โค้ด
                            
คัดลอก
ฝัง
flowchart LR subgraph TOP direction TB subgraph B1 direction RL i1 -->f1 end subgraph B2 direction BT i2 -->f2 end end A --> TOP --> B B1 --> B2

ข้อจำกัด

หากโหนดใดของกราฟย่อยเชื่อมต่อกับภายนอก ทิศทางของกราฟย่อยจะถูกละเว้น มิฉะนั้น กราฟย่อยจะสืบทอดทิศทางของกราฟแม่:

โค้ด
                            
คัดลอก
ฝัง
flowchart LR subgraph subgraph1 direction TB top1[top] --> bottom1[bottom] end subgraph subgraph2 direction TB top2[top] --> bottom2[bottom] end %% ^ These subgraphs are identical, except for the links to them: %% Link *to* subgraph1: subgraph1 direction is maintained outside --> subgraph1 %% Link *within* subgraph2: %% subgraph2 inherits the direction of the top-level graph (LR) outside ---> top2

สตริง Markdown

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

โค้ด
                            
คัดลอก
ฝัง
flowchart LR subgraph "One" a("`The **cat** in the hat`") -- "edge label" --> b{{"`The **dog** in the hog`"}} end subgraph "`**Two**`" c("`The **cat** in the hat`") -- "`Bold **edge label**`" --> d("The dog in the hog") end
  • หากต้องการทำข้อความเป็นตัวหนา โปรดใช้เครื่องหมายดอกจันสองตัว (**) หน้าหลังข้อความ
  • ตัวเอียงใช้เครื่องหมายดอกจันเดียว (*) วางไว้หน้าหลังข้อความ
  • สำหรับสตริงแบบดั้งเดิม คุณต้องเพิ่มแท็ก <br> เพื่อให้ข้อความขึ้นบรรทัดใหม่ในโหนด อย่างไรก็ตาม สตริง Markdown จะขึ้นบรรทัดใหม่โดยอัตโนมัติเมื่อข้อความยาวเกินไป และเพียงใช้ตัวขึ้นบรรทัดใหม่แทนแท็ก <br> ก็สามารถเริ่มบรรทัดใหม่ได้

ฟีเจอร์นี้ใช้ได้กับป้ายกำกับโหนด ป้ายกำกับเส้นเชื่อมต่อ และป้ายกำกับกราฟย่อย

สามารถปิดการตัดบรรทัดอัตโนมัติได้โดยใช้ไวยากรณ์เฉพาะ

โค้ด
                            
คัดลอก
ฝัง
--- config: markdownAutoWrap: false --- graph LR

ความคิดเห็น

สามารถป้อนความคิดเห็นในผังงานได้ และเอดิเตอร์จะไม่สนใจความคิดเห็นเหล่านี้ ความคิดเห็นต้องอยู่บนบรรทัดของตัวเอง และต้องขึ้นต้นด้วยเครื่องหมายเปอร์เซ็นต์คู่ (%%) ข้อความใด ๆ ตั้งแต่เริ่มความคิดเห็นจนถึงบรรทัดถัดไปจะถือเป็นความคิดเห็น รวมถึงไวยากรณ์ของผังงานใด ๆ

โค้ด
                            
คัดลอก
ฝัง
flowchart LR %% this is a comment A -- text --> B{node} A -- text --> B -- text2 --> C

สไตล์และคลาส

สไตล์ของลิงก์

สามารถตั้งค่าสไตล์ของลิงก์ได้ ตัวอย่างเช่น คุณอาจต้องการออกแบบลิงก์ที่เคลื่อนย้ายย้อนกลับในกระบวนการ เนื่องจากลิงก์ไม่มี ID เหมือนโหนด จึงต้องกำหนดสไตล์ที่ลิงก์ควรใช้ด้วยวิธีอื่น ใช้อันดับที่เมื่อกำหนดลิงก์ หรือใช้ค่าเริ่มต้นเพื่อนำไปใช้กับลิงก์ทั้งหมด

                            
คัดลอก
ฝัง
linkStyle 3 stroke:#ff3,stroke-width:4px,color:red;

ยังสามารถเพิ่มสไตล์ให้กับลิงก์หลายรายการได้โดยใช้จุลภาคแยกหมายเลขลิงก์ในคำสั่งเดียว:

                            
คัดลอก
ฝัง
linkStyle 1,2,7 color:blue;

ตั้งค่าสไตล์เส้นโค้งของเส้นเชื่อมต่อ

หากวิธีเริ่มต้นไม่ตอบสนองความต้องการของคุณ คุณสามารถตั้งค่าสไตล์เส้นโค้งให้กับเส้นเชื่อมต่อระหว่างรายการได้ สไตล์เส้นโค้งที่ใช้ได้ได้แก่ basis, bumpX, bumpY, cardinal, catmullRom, linear, monotoneX, monotoneY, natural, step, stepAfter และ stepBefore

ในตัวอย่างด้านล่าง กราฟที่เรียงจากซ้ายไปขวาใช้สไตล์เส้นโค้ง stepBefore

                            
คัดลอก
ฝัง
%%{ init: { 'flowchart': { 'curve': 'stepBefore' } } }%% graph LR

ตั้งค่าสไตล์ของโหนด

สามารถกำหนดสไตล์เฉพาะให้กับโหนดได้ เช่น ขอบที่หนาขึ้นหรือสีพื้นหลังที่ต่างออกไป

โค้ด
                            
คัดลอก
ฝัง
flowchart LR id1(Start)-->id2(Stop) style id1 fill:#f99,stroke:#33d,stroke-width:4px style id2 fill:#bfc,stroke:#f96,stroke-width:2px,color:#000,stroke-dasharray: 5 5

คลาส

สะดวกกว่าการกำหนดสไตล์ทุกครั้งคือการกำหนดคลาสสไตล์ แล้วแนบคลาสนั้นกับโหนดที่ต้องการรูปลักษณ์ที่ต่างออกไป

การกำหนดคลาสมีดังนี้:

                            
คัดลอก
ฝัง
classDef className fill:pink,stroke:#333,stroke-width:4px;

นอกจากนี้ ยังสามารถกำหนดสไตล์ให้กับหลายคลาสในคำสั่งเดียวได้:

                            
คัดลอก
ฝัง
classDef firstClassName,secondClassName font-size:12pt;

การแนบคลาสกับโหนดมีดังนี้:

                            
คัดลอก
ฝัง
class nodeId1 className;

ยังสามารถแนบคลาสหนึ่งกับรายการโหนดในคำสั่งเดียวได้:

                            
คัดลอก
ฝัง
class nodeId1,nodeId2 className;

การเพิ่มคลาสสามารถใช้ตัวดำเนินการ ::: เพื่อแนบชื่อคลาสกับโหนดได้ ดังที่แสดงด้านล่าง:

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A:::someclass --> B classDef someclass fill:#f96

เมื่อประกาศลิงก์หลายรายการระหว่างโหนด สามารถใช้รูปแบบนี้ได้:

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A:::foo & B:::bar --> C:::foobar classDef foo stroke:#f00 classDef bar stroke:#0f0 classDef foobar stroke:#00f

  • ในการประกาศกราฟ ปัจจุบันคำสั่งสามารถไม่ลงท้ายด้วยเครื่องหมายอัฒภาคได้ หลังจากเวอร์ชัน 0.2.16 การลงท้ายคำสั่งกราฟด้วยเครื่องหมายอัฒภาคเป็นเพียงตัวเลือก ดังนั้นการประกาศกราฟด้านล่างจึงใช้ได้เช่นเดียวกับการประกาศกราฟแบบเก่า
  • อนุญาตให้มีช่องว่างหนึ่งช่องระหว่างจุดยอดและลิงก์ อย่างไรก็ตาม ไม่ควรมีช่องว่างใด ๆ ระหว่างจุดยอดกับข้อความของจุดยอด และระหว่างลิงก์กับข้อความของลิงก์ การประกาศกราฟแบบเก่ายังคงใช้ได้ ดังนั้นฟีเจอร์ใหม่นี้จึงเป็นตัวเลือก มีจุดประสงค์เพื่อเพิ่มความอ่านง่าย

ต่อไปนี้คือการประกาศเส้นเชื่อมต่อแบบใหม่ ซึ่งใช้ได้เช่นเดียวกับการประกาศเส้นเชื่อมต่อแบบเก่า

โค้ด
                            
คัดลอก
ฝัง
flowchart LR A[Hard edge] -->|Link text| B(Round edge) B --> C{Decision} C -->|One| D[Result one] C -->|Two| E[Result two]