Registrati
Diagrammi di flusso
Espressione grafica
Mappe mentali
Espressione strutturata
Note
Espressione efficiente

Diagramma di flussoSintassi

Definizione di base

Un diagramma di flusso è composto da nodi (forme geometriche) e linee di collegamento (frecce o linee). Il codice Mermaid definisce come vengono costruiti i nodi e le linee di collegamento e supporta diversi tipi di freccia, frecce multidirezionali e collegamenti arbitrari con i sottografi.

Avviso Se usi la parola "end" in un nodo del diagramma di flusso, scrivi con la maiuscola la prima lettera o l'intera parola (ad esempio: "End" o "END"); se digiti tutto in minuscolo "end" il diagramma di flusso genererà un errore.

Avviso Se colleghi nodi di un diagramma di flusso usando le lettere "o" o "x" come primo carattere, aggiungi uno spazio prima della lettera oppure scrivi la lettera in maiuscolo (ad esempio: "dev--- ops", "dev---Ops").

Un nodo (predefinito)

Codice
                            
Copia
Incorpora
--- title: Node --- flowchart LR id
Informazioni

id è ciò che viene mostrato nel riquadro.

Suggerimento

Nella sintassi di creazione del diagramma di flusso, oltre a flowchart puoi usare anche graph.

Un nodo con testo

Puoi anche impostare per il riquadro un testo diverso dall'id. Se esegui questa operazione più volte, il sistema adotta il testo specificato per ultimo per quel nodo. Inoltre, se in seguito definisci una linea di collegamento per il nodo, puoi omettere la definizione del testo; durante il rendering del riquadro verrà usato il testo definito in precedenza.

Codice
                            
Copia
Incorpora
--- title: Node with text --- flowchart LR id1[This is the text in the box]

Testo Unicode

Racchiudi il testo Unicode tra virgolette doppie.

Codice
                            
Copia
Incorpora
flowchart LR id["This ❤ Unicode"]

Formato Markdown

Racchiudi il testo Markdown tra virgolette doppie e backtick

Codice
                            
Copia
Incorpora
flowchart LR markdown["`This **is** _Markdown_`"] newLines["`Line1 Line 2 Line 3`"] markdown --> newLines

Direzione

Dichiara la direzione del diagramma di flusso

Indica che il diagramma di flusso è disposto dall'alto verso il basso (TD o TB)

Codice
                            
Copia
Incorpora
flowchart TD Start --> Stop

Le direzioni del diagramma di flusso includono:

  • TB - dall'alto verso il basso
  • TD - dall'alto verso il basso (uguale a dall'alto verso il basso)
  • BT - dal basso verso l'alto
  • RL - da destra verso sinistra
  • LR - da sinistra verso destra

Forma del nodo

Rettangolo con angoli arrotondati

Codice
                            
Copia
Incorpora
flowchart LR id1(This is the text in the box)

Forma a stadio

Codice
                            
Copia
Incorpora
flowchart LR id1([This is the text in the box])

Sottoprocesso

Codice
                            
Copia
Incorpora
flowchart LR id1[[This is the text in the box]]

Database

Codice
                            
Copia
Incorpora
flowchart LR id1[(Database)]

Cerchio

Codice
                            
Copia
Incorpora
flowchart LR id1((This is the text in the circle))

Forma asimmetrica

Codice
                            
Copia
Incorpora
flowchart LR id1>This is the text in the box]

Rombo

Codice
                            
Copia
Incorpora
flowchart LR id1{This is the text in the box}

Esagono

Codice
                            
Copia
Incorpora
flowchart LR id1{{This is the text in the box}}

Parallelogramma

Codice
                            
Copia
Incorpora
flowchart TD id1[/This is the text in the box/]

Parallelogramma invertito

Codice
                            
Copia
Incorpora
flowchart TD id1[\This is the text in the box\]

Trapezio

Codice
                            
Copia
Incorpora
flowchart TD A[/ProcessOn\]

Trapezio invertito

Codice
                            
Copia
Incorpora
flowchart TD B[\ProcessOn/]

Doppio cerchio

Codice
                            
Copia
Incorpora
flowchart TD id1(((This is the text in the circle)))

Estensione delle forme dei nodi del diagramma di flusso di Mermaid

Mermaid introduce 30 nuove forme per aumentare la flessibilità e la precisione nella creazione dei diagrammi di flusso. Queste nuove forme offrono più opzioni per rappresentare visivamente processi, decisioni, eventi, archivi di dati e altri elementi del diagramma di flusso, migliorando così chiarezza e significato semantico.

Nuova sintassi per la definizione delle forme

Mermaid ora supporta una sintassi generica per definire i tipi di forma, per adattarsi al numero crescente di forme. Questa sintassi ti permette di specificare una forma particolare per un nodo usando un formato chiaro e flessibile.

                            
Copia
Incorpora
A@{ shape: rect }

Questa sintassi crea il nodo A come rettangolo. Il suo rendering è identico a [A] o A.

Elenco completo delle forme dei nodi

Di seguito è riportato l'elenco completo delle nuove forme dei nodi introdotte, con i relativi significati, abbreviazioni e alias:

Nome semantico Sintassi grafica Abbreviazione della sintassi Alternativa della sintassi Descrizione dettagliata
Scheda Notched Rectangle notch-rect card, notched-rectangle Rappresenta una scheda
Riordino Hourglass hourglass collate Rappresenta un'operazione di riordino
Collegamento di comunicazione Lightning Bolt bolt com-link, lightning-bolt Collegamento di comunicazione
Commento Curly Brace brace brace-l, comment Aggiunge un commento
Commento a destra Curly Brace brace-r Aggiunge un commento
Commento con parentesi graffe su entrambi i lati Curly Braces braces Aggiunge un commento
Input o output di dati Lean Right lean-r in-out, lean-right Rappresenta un input o un output
Input o output di dati Lean Left lean-l lean-left, out-in Rappresenta un output o un input
Database Cylinder cyl cylinder, database, db Archiviazione database
Decisione Diamond diam decision, diamond, question Passo decisionale
Ritardo Half-Rounded Rectangle delay half-rounded-rectangle Rappresenta un ritardo
Memoria ad accesso diretto Horizontal Cylinder h-cyl das, horizontal-cylinder Memoria ad accesso diretto
Memoria su disco Lined Cylinder lin-cyl disk, lined-cylinder Memoria su disco
Visualizzazione Curved Trapezoid curv-trap curved-trapezoid, display Indica che l'informazione viene visualizzata su schermo, terminale o altri dispositivi
Elaborazione suddivisa Divided Rectangle div-rect div-proc, divided-process, divided-rectangle Forma di elaborazione suddivisa
Documento Document doc document Rappresenta un documento
Evento Rounded Rectangle rounded event Rappresenta un evento
Estrazione Triangle tri extract, triangle Processo di estrazione
Biforcazione/Unione Filled Rectangle fork join Biforcazione o unione in un diagramma di flusso
Memoria interna Window Pane win-pane internal-storage, window-pane Memoria interna
Punto di connessione Filled Circle f-circ filled-circle, junction Punto di connessione
Documento con linea Lined Document lin-doc lined-document Documento con linea
Processo con linea/ombreggiatura Lined Rectangle lin-rect lin-proc, lined-process, lined-rectangle, shaded-process Forma di processo con linea
Limite di ciclo Trapezoidal Pentagon notch-pent loop-limit, notched-pentagon Passo di limite di ciclo
File manuale Flipped Triangle flip-tri flipped-triangle, manual-file Operazione manuale su file
Input manuale Sloped Rectangle sl-rect manual-input, sloped-rectangle Passo di input manuale
Operazione manuale Trapezoid Base Top trap-t inv-trapezoid, manual, trapezoid-top Rappresenta un'attività manuale
Documenti multipli Stacked Document docs documents, st-doc, stacked-document 多个文档
Processi multipli Stacked Rectangle st-rect processes, procs, stacked-rectangle 多个进程
Forma irregolare Odd odd Forma irregolare
Nastro di carta Flag flag paper-tape Nastro di carta
Condizione di preparazione Hexagon hex hexagon, prepare Passo di preparazione o condizione
Azione prioritaria Trapezoid Base Bottom trap-b priority, trapezoid, trapezoid-bottom Azione prioritaria
Elaborazione Rectangle rect proc, process, rectangle Forma di elaborazione standard
Inizio Circle circle circ Punto di partenza
Inizio Small Circle sm-circ small-circle, start Piccolo cerchio di partenza
Arresto Double Circle dbl-circ double-circle Rappresenta un punto di arresto
Arresto Framed Circle fr-circ framed-circle, stop Rappresenta un punto di arresto
Archiviazione dati Bow Tie Rectangle bow-rect bow-tie-rectangle, stored-data Archiviazione dati
Sottoprocesso Framed Rectangle fr-rect framed-rectangle, subproc, subprocess, subroutine Sottoprocesso, sottoprogramma
Riepilogo Crossed Circle cross-circ crossed-circle, summary Riepilogo
Documento con etichetta Tagged Document tag-doc tagged-document Documento con etichetta
Processo standardizzato Tagged Rectangle tag-rect tag-proc, tagged-process, tagged-rectangle 已标准进程
Punto finale Stadium stadium pill, terminal Punto finale
Blocco di testo Text Block text Blocco di testo

Di seguito è riportato un esempio di codice di un diagramma di flusso che utilizza le nuove forme introdotte:

Codice
                            
Copia
Incorpora
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"}

Processo

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: rect, label: "This is a process" }

Evento

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: rounded, label: "This is an event" }

Sottoprocesso

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: subproc, label: "This is a subprocess" }

Database (cilindro)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: cyl, label: "Database" }

Inizio (cerchio)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: circle, label: "Start" }

Forma irregolare

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: odd, label: "Odd shape" }

Decisione (rombo)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: diamond, label: "Decision" }

Condizione di preparazione (esagono)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: hex, label: "Prepare conditional" }

Input/output di dati (inclinato a destra)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: lean-r, label: "Input/Output" }

Input/output di dati (inclinato a sinistra)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: lean-l, label: "Input/Output" }

Azione prioritaria (trapezio)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: trap-b, label: "Priority action" }

Operazione manuale (trapezio invertito)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: trap-t, label: "Manual operation" }

Arresto (doppio cerchio)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: dbl-circ, label: "Stop" }

Blocco di testo

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: text, label: "This is a text block" }

Scheda (rettangolo con tacca)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: notch-rect, label: "Card" }

Processo con linea/ombreggiatura

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: lin-rect, label: "Lined process" }

Inizio (piccolo cerchio)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: sm-circ, label: "Small start" }

Arresto (cerchio con riquadro)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: framed-circle, label: "Stop" }

Biforcazione/Unione (rettangolo lungo)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: fork, label: "Fork or Join" }

Riordino (clessidra)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: hourglass, label: "Collate" }

Commento (parentesi graffe)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: comment, label: "Comment" }

Commento a destra (parentesi graffa destra)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: brace-r, label: "Comment" }

Commento (con parentesi su entrambi i lati)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: braces, label: "Comment" }

Collegamento di comunicazione (fulmine)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: bolt, label: "Communication link" }

Documento

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: doc, label: "Document" }

Ritardo (rettangolo semi-arrotondato)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: delay, label: "Delay" }

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

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: das, label: "Direct access to storage" }

Memoria su disco (cilindro con scanalatura)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: lin-cyl, label: "Disk storage" }

Visualizzazione (forma di visualizzazione)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: curv-trap, label: "Display" }

Elaborazione suddivisa (rettangolo suddiviso)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: div-rect, label: "Divided process" }

Estrazione (piccolo triangolo)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: tri, label: "Extract" }

Memoria interna (pannello finestra)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: win-pane, label: "Internal storage" }

Punto di connessione (cerchio pieno)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: f-circ, label: "Connect" }

Documento con linea

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: lin-doc, label: "Lined document" }

Limite di ciclo (pentagono con tacca)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: notch-pent, label: "Loop limit" }

File manuale (triangolo capovolto)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: flip-tri, label: "Manual file" }

Input manuale (trapezio rettangolo)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: sl-rect, label: "Manual input" }

Documenti multipli (documenti impilati)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: docs, label: "Multi-document" }

Processi multipli (rettangoli impilati)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: processes, label: "Multiple processes" }

Nastro di carta (bandiera)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: flag, label: "Paper tape" }

Archiviazione dati (rettangolo a farfalla)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: bow-rect, label: "Data stored" }

Riepilogo (cerchio con croce)

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: cross-circ, label: "Summary" }

Documento con etichetta

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: tag-doc, label: "Tagged document" }

Processo contrassegnato

Codice
                            
Copia
Incorpora
flowchart TD A@{ shape: tag-rect, label: "Tagged process" }

Forme speciali nei diagrammi di flusso di Mermaid

Mermaid introduce anche le immagini per arricchire i tuoi diagrammi di flusso, permettendoti di includere immagini direttamente nel diagramma, offrendo così più contesto visivo e chiarezza.

Forma immagine

Puoi usare image per inserire un'immagine in un diagramma di flusso; la sintassi per definire un'immagine è la seguente:

                            
Copia
Incorpora
flowchart TD A@{ img: "https://www.processon.com/image.png", label: "Image Label", pos: "t", w: 60, h: 60, constraint: "off" }

Parametro

  • img: l'URL dell'immagine da visualizzare.
  • label: l'etichetta testuale associata all'immagine, può essere qualsiasi stringa. Se non definita, non verrà mostrata alcuna etichetta.
  • pos: la posizione dell'etichetta. Se non definita, l'etichetta per impostazione predefinita sarà posizionata in basso rispetto all'immagine.
  • w: la larghezza dell'immagine. Se non definita, il valore predefinito è la larghezza naturale dell'immagine.
  • h: l'altezza dell'immagine. Se non definita, il valore predefinito è l'altezza naturale dell'immagine.
  • constraint: determina se l'immagine limita la dimensione del nodo. Questa impostazione garantisce inoltre che l'immagine mantenga il suo rapporto d'aspetto originale e regola l'altezza in base alla larghezza. Se non definita, il valore predefinito è off.

Le immagini offrono ai tuoi diagrammi di flusso ulteriore flessibilità e attrattiva visiva, rendendoli più informativi e accattivanti.

Collegamenti tra i nodi

I nodi possono essere collegati tramite linee di collegamento e frecce. Esistono diversi tipi di collegamento ed è anche possibile allegare stringhe di testo ai collegamenti.

Collegamento con freccia

Codice
                            
Copia
Incorpora
flowchart LR A-->B

Un collegamento aperto

Codice
                            
Copia
Incorpora
flowchart LR A --- B

Collegamento con testo

Codice
                            
Copia
Incorpora
flowchart LR A-- This is the text! ---B

oppure

Codice
                            
Copia
Incorpora
flowchart LR A --- | This is the text| B

Collegamento con freccia e testo

Codice
                            
Copia
Incorpora
flowchart LR A-->|text|B

oppure

Codice
                            
Copia
Incorpora
flowchart LR A-- text -->B

Collegamento tratteggiato

Codice
                            
Copia
Incorpora
flowchart LR A-.->B;

Collegamento tratteggiato con testo

Codice
                            
Copia
Incorpora
flowchart LR A-. text .->B;

Collegamento spesso

Codice
                            
Copia
Incorpora
flowchart LR A ==> B

Collegamento spesso con testo

Codice
                            
Copia
Incorpora
flowchart LR A == |text| ==> B

Collegamento invisibile

Codice
                            
Copia
Incorpora
flowchart LR A ~~~ B

Collegamento a catena di link

Codice
                            
Copia
Incorpora
flowchart LR A -- text --> B -- text2 --> C

È anche possibile dichiarare più collegamenti tra nodi sulla stessa riga, come mostrato di seguito:

Codice
                            
Copia
Incorpora
flowchart LR a --> b & c--> d

Puoi anche descrivere le dipendenze, come nel codice seguente:

Codice
                            
Copia
Incorpora
flowchart LR a --> b & c--> d & e--> f

Se descrivi lo stesso grafico con la sintassi di base, sono necessarie 8 righe. Va ricordato che un uso eccessivo di questo metodo può rendere più difficile la lettura dei diagrammi di flusso in formato Markdown.

Codice
                            
Copia
Incorpora
flowchart TB a --> b a --> c b --> d b --> e c --> d c --> e d --> f e --> f

Aggiungere un ID a una linea di collegamento

Mermaid ora supporta l'aggiunta di un ID alle linee di collegamento, in modo simile all'aggiunta di ID e metadati ai nodi. Questa funzionalità pone le basi per stili, classi e animazioni più avanzate sulle linee di collegamento.

Sintassi:

Per aggiungere un ID a una linea di collegamento, anteponi l'ID alla sintassi della linea di collegamento, seguito immediatamente dal carattere @. Ad esempio:

Codice
                            
Copia
Incorpora
flowchart LR A e1@--> B

In questo esempio, e1 è l'ID della linea di collegamento che collega A e B. Puoi usare questo ID nelle definizioni o nelle istruzioni di stile successive, proprio come faresti con un nodo.

Attivare l'animazione

Dopo aver aggiunto un ID a una linea di collegamento, puoi attivare l'animazione della linea di collegamento definendo le sue proprietà:

Codice
                            
Copia
Incorpora
flowchart LR A e1@==> B e1@{ animate: true }

Questo indica a Mermaid che la linea di collegamento e1 è animata.

Scegliere il tipo di animazione

Nella versione iniziale sono supportate due velocità di animazione: fast e slow. Scegliere un tipo di animazione specifico è un modo semplice per abilitare l'animazione e impostare contemporaneamente la velocità.

Codice
                            
Copia
Incorpora
flowchart LR A e1@--> B e1@{ animation: fast }

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

Animare con l'istruzione classDef

Puoi anche animare una linea di collegamento assegnandole una classe e poi definendo le proprietà di animazione nell'istruzione classDef. Ad esempio:

Codice
                            
Copia
Incorpora
flowchart LR A e1@--> B classDef animate stroke-dasharray: 9,5,stroke-dashoffset: 900,animation: dash 25s linear infinite; class e1 animate

In questo codice:

  • e1@--> 创建了一个 ID 为 e1 的连接线
  • classDef animate definisce una classe chiamata animate, con proprietà di stile e animazione.
  • class e1 animate applica la classe animate alla linea di collegamento e1.

Nota sull'escape della virgola: quando imposti la proprietà stroke-dasharray, ricorda di eseguire l'escape della virgola come ,, poiché la virgola è usata come separatore nelle definizioni di stile di Mermaid.

Nuovi tipi di freccia

Supporto per nuovi tipi di freccia

  • Linea di collegamento con cerchio pieno
  • Linea di collegamento con contrassegno a croce

Linea di collegamento con cerchio pieno

Codice
                            
Copia
Incorpora
flowchart LR A --o B

Linea di collegamento con contrassegno a croce

Codice
                            
Copia
Incorpora
flowchart LR A --x B

Freccia multidirezionale

È possibile usare frecce multidirezionali, ad esempio:

Codice
                            
Copia
Incorpora
flowchart LR A o--o B B <--> C C x--x D

Lunghezza della linea di collegamento

Ogni nodo di un diagramma di flusso, in base ai nodi a cui è collegato, viene assegnato a un livello nel grafico renderizzato, cioè a un livello verticale o orizzontale (a seconda della direzione del diagramma di flusso). Per impostazione predefinita, un collegamento può estendersi su un numero qualsiasi di livelli, ma puoi richiedere che un collegamento sia più lungo degli altri aggiungendo trattini aggiuntivi nella definizione del collegamento.

In questo esempio, nel collegamento dal nodo B al nodo E sono stati aggiunti due trattini extra, facendogli coprire due livelli in più rispetto a un collegamento normale:

Codice
                            
Copia
Incorpora
flowchart TD A[Start] --> B{Is it?} B -->|Yes| C[OK] C --> D[Rethink] D --> B B ---->|No| E[End]
Nota: un collegamento può risultare più lungo del numero di livelli richiesto dal motore di rendering, per adattarsi ad altre richieste.

Quando l'etichetta di un collegamento è scritta al centro del collegamento, è necessario aggiungere trattini extra a destra del collegamento. Questo esempio è equivalente a quello precedente:

Codice
                            
Copia
Incorpora
flowchart TD A[Start] --> B{Is it?} B -->|Yes| C[OK] C --> D[Rethink] D --> B B -- No ----> E[End]

Per le linee puntinate o i collegamenti spessi, il carattere da aggiungere è il segno di uguale o il punto, come mostrato nella tabella seguente:

Lunghezza 1 2 3
Collegamento normale --- ---- -----
Collegamento normale con freccia --> ---> ---->
Collegamento spesso === ==== =====
Collegamento spesso con freccia ==> ===> ====>
Linea puntinata -.- -..- -...-
Linea puntinata con freccia -.- -..-> -...->

Caratteri speciali

Puoi racchiudere il testo tra virgolette per renderizzare caratteri più problematici. Come nell'esempio seguente:

Codice
                            
Copia
Incorpora
flowchart LR id1["This is the (text) in the box"]

Codifica di entità per l'escape dei caratteri

Puoi eseguire l'escape dei caratteri usando la sintassi dell'esempio.

Codice
                            
Copia
Incorpora
flowchart LR A["A double quote:#quot;"] --> B["A dec char:#9829;"]

I numeri forniti sono decimali, quindi # può essere codificato come #35. È supportato anche l'uso dei nomi di carattere HTML.

Sottografo

                            
Copia
Incorpora
subgraph title graph definition end

Di seguito un esempio:

Codice
                            
Copia
Incorpora
flowchart TB c1-->a2 subgraph one a1-->a2 end subgraph two b1-->b2 end subgraph three c1-->c2 end

Puoi anche impostare un id per il sottografo.

Codice
                            
Copia
Incorpora
flowchart TB c1-->a2 subgraph ide1 [one] a1-->a2 end

Diagramma di flusso

Usando i diagrammi di tipo diagramma di flusso, puoi anche impostare linee di collegamento da e verso il sottografo, come nel diagramma di flusso seguente.

Codice
                            
Copia
Incorpora
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

Direzione del sottografo

Quando usi il tipo diagramma di flusso, puoi usare l'istruzione di direzione per impostare la direzione di rendering del sottografo, come mostrato di seguito:

Codice
                            
Copia
Incorpora
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

Limitazioni

Se qualsiasi nodo del sottografo è collegato all'esterno, la direzione del sottografo viene ignorata. In caso contrario, il sottografo eredita la direzione del grafico padre:

Codice
                            
Copia
Incorpora
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

Stringhe Markdown

Le stringhe Markdown migliorano i diagrammi di flusso e le mappe mentali offrendo un tipo di stringa più flessibile, supportando opzioni di formattazione del testo come grassetto e corsivo e la possibilità di andare a capo automaticamente all'interno delle etichette.

Codice
                            
Copia
Incorpora
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
  • Per rendere il testo in grassetto, usa due asterischi (**) prima e dopo il testo.
  • Il corsivo si ottiene usando un singolo asterisco (*) prima e dopo il testo.
  • Per le stringhe tradizionali, devi aggiungere il tag <br> per andare a capo nel testo all'interno di un nodo. Tuttavia, le stringhe Markdown vanno a capo automaticamente quando il testo è troppo lungo ed è sufficiente usare un carattere di nuova riga invece del tag <br> per iniziare una nuova riga.

Questa funzionalità si applica alle etichette dei nodi, alle etichette delle linee di collegamento e alle etichette dei sottografi

È possibile disabilitare l'andata a capo automatica usando una sintassi specifica

Codice
                            
Copia
Incorpora
--- config: markdownAutoWrap: false --- graph LR

Commento

Puoi inserire commenti in un diagramma di flusso; l'editor li ignorerà. I commenti devono occupare una riga propria e devono iniziare con il doppio segno di percentuale (%%). Qualsiasi testo dal commento fino alla riga successiva sarà considerato un commento, inclusa qualsiasi sintassi del diagramma di flusso.

Codice
                            
Copia
Incorpora
flowchart LR %% this is a comment A -- text --> B{node} A -- text --> B -- text2 --> C

Stili e classi

Stile dei collegamenti

Puoi impostare lo stile dei collegamenti. Ad esempio, potresti voler dare uno stile a un collegamento che si muove all'indietro nel processo; poiché i collegamenti non hanno un ID come i nodi, devi decidere in altro modo quale stile debba usare ciascun collegamento. Usa il numero d'ordine al momento della definizione del collegamento, oppure usa il valore predefinito per applicarlo a tutti i collegamenti.

                            
Copia
Incorpora
linkStyle 3 stroke:#ff3,stroke-width:4px,color:red;

Puoi anche aggiungere uno stile a più collegamenti separando i numeri dei collegamenti con virgole in un'unica istruzione:

                            
Copia
Incorpora
linkStyle 1,2,7 color:blue;

Impostare lo stile della curva della linea di collegamento

Se il metodo predefinito non soddisfa le tue esigenze, puoi impostare uno stile di curva per le linee di collegamento tra gli elementi. Gli stili di curva disponibili includono basis, bumpX, bumpY, cardinal, catmullRom, linear, monotoneX, monotoneY, natural, step, stepAfter e stepBefore.

Nell'esempio seguente, un diagramma da sinistra a destra usa lo stile di curva stepBefore.

                            
Copia
Incorpora
%%{ init: { 'flowchart': { 'curve': 'stepBefore' } } }%% graph LR

Impostare lo stile dei nodi

Puoi impostare uno stile specifico per un nodo, ad esempio un bordo più spesso o un colore di sfondo diverso.

Codice
                            
Copia
Incorpora
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

Classe

Più comodo che definire lo stile ogni volta è definire una classe di stile e applicarla ai nodi che devono avere un aspetto diverso.

La definizione della classe è la seguente:

                            
Copia
Incorpora
classDef className fill:pink,stroke:#333,stroke-width:4px;

Inoltre, puoi definire lo stile per più classi in un'unica istruzione:

                            
Copia
Incorpora
classDef firstClassName,secondClassName font-size:12pt;

L'operazione per allegare una classe a un nodo è la seguente:

                            
Copia
Incorpora
class nodeId1 className;

Puoi anche allegare una classe a un elenco di nodi in un'unica istruzione:

                            
Copia
Incorpora
class nodeId1,nodeId2 className;

Per aggiungere una classe puoi usare l'operatore ::: per allegare il nome della classe a un nodo, come mostrato di seguito:

Codice
                            
Copia
Incorpora
flowchart LR A:::someclass --> B classDef someclass fill:#f96

Questa forma può essere usata quando si dichiarano più collegamenti tra nodi:

Codice
                            
Copia
Incorpora
flowchart LR A:::foo & B:::bar --> C:::foobar classDef foo stroke:#f00 classDef bar stroke:#0f0 classDef foobar stroke:#00f

  • Nella dichiarazione del grafico, ora le istruzioni possono anche non terminare con un punto e virgola. Dalla versione 0.2.16, terminare le istruzioni del grafico con un punto e virgola è solo opzionale. Pertanto, la seguente dichiarazione del grafico è valida quanto quella vecchia.
  • Tra vertici e collegamenti è consentito uno spazio. Tuttavia, non deve esserci alcuno spazio tra un vertice e il suo testo né tra un collegamento e il suo testo. Anche la vecchia dichiarazione del grafico rimane valida, quindi questa nuova funzionalità è opzionale e mira a migliorare la leggibilità.

Di seguito è riportata la nuova dichiarazione della linea di collegamento, che è valida quanto quella vecchia.

Codice
                            
Copia
Incorpora
flowchart LR A[Hard edge] -->|Link text| B(Round edge) B --> C{Decision} C -->|One| D[Result one] C -->|Two| E[Result two]