Tipo de diagrama de flujo
Expresión gráfica
Mapas mentales
Expresión estructurada
Notas
Expresión eficiente

Diagrama de flujoSintaxis

Definición básica

Un diagrama de flujo se compone de nodos (formas geométricas) y líneas de conexión (flechas o líneas). El código de Mermaid define cómo se construyen los nodos y las líneas de conexión, y admite varios tipos de flechas, flechas multidireccionales y enlaces arbitrarios con subgrafos.

Advertencia Si usas la palabra "end" en un nodo del diagrama de flujo, escribe con mayúscula la primera letra o toda la palabra (por ejemplo: "End" o "END"); si escribes "end" todo en minúsculas, el diagrama de flujo dará error.

Advertencia Si al conectar nodos del diagrama de flujo usas la letra "o" o "x" como primera letra, añade un espacio delante de la letra o escribe la letra en mayúscula (por ejemplo: "dev--- ops", "dev---Ops").

Un nodo (predeterminado)

Código
                            
Copiar
Insertar
--- title: Node --- flowchart LR id
Información

id es el contenido que se muestra en el recuadro.

Sugerencia

En la sintaxis de creación de diagramas de flujo, además de usar flowchart, también puedes usar graph.

Un nodo con texto

También puedes establecer para el recuadro un texto distinto del id. Si lo haces varias veces, el sistema tomará el último texto especificado para ese nodo. Además, si más adelante defines una línea de conexión para el nodo, puedes omitir la definición del texto; al renderizar el recuadro se usará el texto definido anteriormente.

Código
                            
Copiar
Insertar
--- title: Node with text --- flowchart LR id1[This is the text in the box]

Texto Unicode

Usa comillas dobles para encerrar el texto Unicode.

Código
                            
Copiar
Insertar
flowchart LR id["This ❤ Unicode"]

Formato Markdown

Usa comillas dobles y comillas invertidas para encerrar el texto Markdown

Código
                            
Copiar
Insertar
flowchart LR markdown["`This **is** _Markdown_`"] newLines["`Line1 Line 2 Line 3`"] markdown --> newLines

Dirección

Declara la dirección del diagrama de flujo

Indica que el diagrama de flujo se ordena de arriba hacia abajo (TD o TB)

Código
                            
Copiar
Insertar
flowchart TD Start --> Stop

Las direcciones del diagrama de flujo incluyen:

  • TB - de arriba hacia abajo
  • TD - de arriba hacia abajo (igual que de arriba hacia abajo)
  • BT - de abajo hacia arriba
  • RL - de derecha a izquierda
  • LR - de izquierda a derecha

Forma del nodo

Rectángulo redondeado

Código
                            
Copiar
Insertar
flowchart LR id1(This is the text in the box)

Forma de estadio

Código
                            
Copiar
Insertar
flowchart LR id1([This is the text in the box])

Subgrafo

Código
                            
Copiar
Insertar
flowchart LR id1[[This is the text in the box]]

Base de datos

Código
                            
Copiar
Insertar
flowchart LR id1[(Database)]

Círculo

Código
                            
Copiar
Insertar
flowchart LR id1((This is the text in the circle))

Forma asimétrica

Código
                            
Copiar
Insertar
flowchart LR id1>This is the text in the box]

Rombo

Código
                            
Copiar
Insertar
flowchart LR id1{This is the text in the box}

Hexágono

Código
                            
Copiar
Insertar
flowchart LR id1{{This is the text in the box}}

Paralelogramo

Código
                            
Copiar
Insertar
flowchart TD id1[/This is the text in the box/]

Paralelogramo invertido

Código
                            
Copiar
Insertar
flowchart TD id1[\This is the text in the box\]

Trapecio

Código
                            
Copiar
Insertar
flowchart TD A[/ProcessOn\]

Trapecio invertido

Código
                            
Copiar
Insertar
flowchart TD B[\ProcessOn/]

Doble círculo

Código
                            
Copiar
Insertar
flowchart TD id1(((This is the text in the circle)))

Extensión de formas de nodo del diagrama de flujo de Mermaid

Mermaid ha introducido 30 formas nuevas para aumentar la flexibilidad y la precisión en la creación de diagramas de flujo. Estas nuevas formas ofrecen más opciones para representar visualmente procesos, decisiones, eventos, almacenamiento de datos y otros elementos del diagrama de flujo, mejorando así la claridad y el significado semántico.

Nueva sintaxis para definir formas

Mermaid ahora admite una sintaxis general para definir tipos de formas, adaptándose al número cada vez mayor de formas. Esta sintaxis te permite especificar una forma concreta para un nodo con un formato claro y flexible.

                            
Copiar
Insertar
A@{ shape: rect }

Esta sintaxis crea el nodo A como un rectángulo. Se renderiza igual que [A] o A.

Lista completa de formas de nodo

A continuación se muestra la lista completa de las formas de nodo introducidas recientemente, junto con su significado, nombre corto y alias correspondientes:

Nombre semántico Sintaxis del gráfico Nombre corto de la sintaxis Alternativa de sintaxis Descripción detallada
Tarjeta Notched Rectangle notch-rect card, notched-rectangle Representa una tarjeta
Ordenar Hourglass hourglass collate Representa una operación de ordenación
Enlace de comunicación Lightning Bolt bolt com-link, lightning-bolt Enlace de comunicación
Comentario Curly Brace brace brace-l, comment Añadir un comentario
Comentario a la derecha Curly Brace brace-r Añadir un comentario
Comentario con llaves en ambos lados Curly Braces braces Añadir un comentario
Entrada o salida de datos Lean Right lean-r in-out, lean-right Representa una entrada o salida
Entrada o salida de datos Lean Left lean-l lean-left, out-in Representa una salida o una entrada
Base de datos Cylinder cyl cylinder, database, db Almacenamiento de base de datos
Decisión Diamond diam decision, diamond, question Paso de decisión
Retardo Half-Rounded Rectangle delay half-rounded-rectangle Representa un retardo
Almacenamiento de acceso directo Horizontal Cylinder h-cyl das, horizontal-cylinder Almacenamiento de acceso directo
Almacenamiento en disco Lined Cylinder lin-cyl disk, lined-cylinder Almacenamiento en disco
Visualización Curved Trapezoid curv-trap curved-trapezoid, display Indica que la información se muestra en pantalla, terminal u otros dispositivos
Procesamiento dividido Divided Rectangle div-rect div-proc, divided-process, divided-rectangle Forma de procesamiento dividido
Documento Document doc document Representa un documento
Evento Rounded Rectangle rounded event Representa un evento
Extracción Triangle tri extract, triangle Proceso de extracción
Bifurcación/Fusión Filled Rectangle fork join Bifurcación o fusión en el diagrama de flujo
Almacenamiento interno Window Pane win-pane internal-storage, window-pane Almacenamiento interno
Punto de conexión Filled Circle f-circ filled-circle, junction Punto de conexión
Documento con línea Lined Document lin-doc lined-document Documento con línea
Proceso de línea/sombra Lined Rectangle lin-rect lin-proc, lined-process, lined-rectangle, shaded-process Forma de proceso con líneas
Límite de bucle Trapezoidal Pentagon notch-pent loop-limit, notched-pentagon Paso de límite de bucle
Archivo manual Flipped Triangle flip-tri flipped-triangle, manual-file Operación de archivo manual
Entrada manual Sloped Rectangle sl-rect manual-input, sloped-rectangle Paso de entrada manual
Operación manual Trapezoid Base Top trap-t inv-trapezoid, manual, trapezoid-top Representa una tarea manual
Multi-documento Stacked Document docs documents, st-doc, stacked-document 多个文档
Multiproceso Stacked Rectangle st-rect processes, procs, stacked-rectangle 多个进程
Forma irregular Odd odd Forma irregular
Cinta de papel Flag flag paper-tape Cinta de papel
Preparar condición Hexagon hex hexagon, prepare Paso de preparación o condición
Acción prioritaria Trapezoid Base Bottom trap-b priority, trapezoid, trapezoid-bottom Acción prioritaria
Proceso Rectangle rect proc, process, rectangle Forma de proceso estándar
Inicio Circle circle circ Punto de inicio
Inicio Small Circle sm-circ small-circle, start Pequeño círculo de inicio
Parada Double Circle dbl-circ double-circle Representa un punto de parada
Parada Framed Circle fr-circ framed-circle, stop Representa un punto de parada
Almacenar datos Bow Tie Rectangle bow-rect bow-tie-rectangle, stored-data Almacenar datos
Subgrafo Framed Rectangle fr-rect framed-rectangle, subproc, subprocess, subroutine Subgrafo, subproceso
Resumen Crossed Circle cross-circ crossed-circle, summary Resumen
Documento etiquetado Tagged Document tag-doc tagged-document Documento etiquetado
Proceso estandarizado Tagged Rectangle tag-rect tag-proc, tagged-process, tagged-rectangle 已标准进程
Punto final Stadium stadium pill, terminal Punto final
Bloque de texto Text Block text Bloque de texto

A continuación se muestra un ejemplo de código de diagrama de flujo que usa las formas introducidas recientemente:

Código
                            
Copiar
Insertar
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"}

Proceso

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: rect, label: "This is a process" }

Evento

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: rounded, label: "This is an event" }

Subproceso

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: subproc, label: "This is a subprocess" }

Base de datos (cilindro)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: cyl, label: "Database" }

Inicio (círculo)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: circle, label: "Start" }

Forma irregular

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: odd, label: "Odd shape" }

Decisión (rombo)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: diamond, label: "Decision" }

Preparar condición (hexágono)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: hex, label: "Prepare conditional" }

Entrada/salida de datos (inclinada a la derecha)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: lean-r, label: "Input/Output" }

Entrada/salida de datos (inclinada a la izquierda)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: lean-l, label: "Input/Output" }

Acción prioritaria (trapecio)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: trap-b, label: "Priority action" }

Operación manual (trapecio invertido)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: trap-t, label: "Manual operation" }

Parada (doble círculo)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: dbl-circ, label: "Stop" }

Bloque de texto

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: text, label: "This is a text block" }

Tarjeta (rectángulo con muesca)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: notch-rect, label: "Card" }

Proceso con línea/sombra

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: lin-rect, label: "Lined process" }

Inicio (círculo pequeño)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: sm-circ, label: "Small start" }

Parada (círculo con marco)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: framed-circle, label: "Stop" }

Bifurcación/Fusión (rectángulo largo)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: fork, label: "Fork or Join" }

Ordenar (reloj de arena)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: hourglass, label: "Collate" }

Comentario (llaves)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: comment, label: "Comment" }

Comentario a la derecha (llaves a la derecha)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: brace-r, label: "Comment" }

Comentario (con llaves en ambos lados)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: braces, label: "Comment" }

Enlace de comunicación (rayo)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: bolt, label: "Communication link" }

Documento

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: doc, label: "Document" }

Retardo (rectángulo semirredondeado)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: delay, label: "Delay" }

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

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: das, label: "Direct access to storage" }

Almacenamiento en disco (cilindro con ranuras)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: lin-cyl, label: "Disk storage" }

Visualización (forma de visualización)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: curv-trap, label: "Display" }

Procesamiento dividido (rectángulo dividido)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: div-rect, label: "Divided process" }

Extracción (triángulo pequeño)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: tri, label: "Extract" }

Almacenamiento interno (panel de ventana)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: win-pane, label: "Internal storage" }

Punto de conexión (círculo relleno)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: f-circ, label: "Connect" }

Documento con línea

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: lin-doc, label: "Lined document" }

Límite de bucle (pentágono con muesca)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: notch-pent, label: "Loop limit" }

Archivo manual (triángulo invertido)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: flip-tri, label: "Manual file" }

Entrada manual (trapecio rectángulo)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: sl-rect, label: "Manual input" }

Multi-documento (documentos apilados)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: docs, label: "Multi-document" }

Multiproceso (rectángulos apilados)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: processes, label: "Multiple processes" }

Cinta de papel (bandera)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: flag, label: "Paper tape" }

Almacenar datos (rectángulo de pajarita)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: bow-rect, label: "Data stored" }

Resumen (círculo con cruz)

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: cross-circ, label: "Summary" }

Documento etiquetado

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: tag-doc, label: "Tagged document" }

Proceso marcado

Código
                            
Copiar
Insertar
flowchart TD A@{ shape: tag-rect, label: "Tagged process" }

Formas especiales en los diagramas de flujo de Mermaid

Mermaid también ha introducido imágenes para mejorar tus diagramas de flujo, permitiéndote incluirlas directamente en ellos y aportando más contexto visual y claridad.

Forma de imagen

Puedes usar image para insertar una imagen en el diagrama de flujo; la sintaxis para definir la imagen es la siguiente:

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

Parámetro

  • img: la dirección URL de la imagen que se va a mostrar.
  • label: la etiqueta de texto asociada a la imagen, puede ser cualquier cadena. Si no se define, no se mostrará ninguna etiqueta.
  • pos: la posición de la etiqueta. Si no se define, la etiqueta se ubicará de forma predeterminada en la parte inferior de la imagen.
  • w: el ancho de la imagen. Si no se define, se usa de forma predeterminada el ancho natural de la imagen.
  • h: la altura de la imagen. Si no se define, se usa de forma predeterminada la altura natural de la imagen.
  • constraint: determina si la imagen limita el tamaño del nodo. Esta configuración también garantiza que la imagen conserve su relación de aspecto original y ajusta la altura según el ancho. Si no se define, su valor predeterminado es off.

Las imágenes aportan flexibilidad adicional y atractivo visual a tus diagramas de flujo, haciéndolos más informativos y atractivos.

Conexiones entre nodos

Los nodos pueden conectarse mediante líneas de conexión y flechas. Existen diferentes tipos de enlaces y también se puede adjuntar una cadena de texto al enlace.

Enlace con flecha

Código
                            
Copiar
Insertar
flowchart LR A-->B

Un enlace abierto

Código
                            
Copiar
Insertar
flowchart LR A --- B

Enlace con texto

Código
                            
Copiar
Insertar
flowchart LR A-- This is the text! ---B

o

Código
                            
Copiar
Insertar
flowchart LR A --- | This is the text| B

Enlace con flecha y texto

Código
                            
Copiar
Insertar
flowchart LR A-->|text|B

o

Código
                            
Copiar
Insertar
flowchart LR A-- text -->B

Enlace discontinuo

Código
                            
Copiar
Insertar
flowchart LR A-.->B;

Enlace discontinuo con texto

Código
                            
Copiar
Insertar
flowchart LR A-. text .->B;

Enlace grueso

Código
                            
Copiar
Insertar
flowchart LR A ==> B

Enlace grueso con texto

Código
                            
Copiar
Insertar
flowchart LR A == |text| ==> B

Enlace invisible

Código
                            
Copiar
Insertar
flowchart LR A ~~~ B

Conexión en cadena de enlaces

Código
                            
Copiar
Insertar
flowchart LR A -- text --> B -- text2 --> C

También puedes declarar varios enlaces de nodo en la misma línea, como se muestra a continuación:

Código
                            
Copiar
Insertar
flowchart LR a --> b & c--> d

También puedes describir dependencias, como en el siguiente código:

Código
                            
Copiar
Insertar
flowchart LR a --> b & c--> d & e--> f

Si describieras el mismo gráfico con la sintaxis básica, necesitarías 8 líneas. Cabe recordar que abusar de este método puede dificultar la lectura de los diagramas de flujo en formato Markdown.

Código
                            
Copiar
Insertar
flowchart TB a --> b a --> c b --> d b --> e c --> d c --> e d --> f e --> f

Añadir un ID a la línea de conexión

Mermaid ahora admite añadir un ID a la línea de conexión, de forma similar a adjuntar un ID y metadatos a los nodos. Esta función sienta las bases para capacidades más avanzadas de estilo, clases y animación en las líneas de conexión.

Sintaxis:

Para añadir un ID a la línea de conexión, antepón el ID a la sintaxis de la línea de conexión, seguido inmediatamente del carácter @. Por ejemplo:

Código
                            
Copiar
Insertar
flowchart LR A e1@--> B

En este ejemplo, e1 es el ID de la línea de conexión que conecta A y B. Puedes usar este ID en definiciones o sentencias de estilo posteriores, igual que con un nodo.

Activar animación

Después de añadir un ID a la línea de conexión, puedes activar su animación definiendo las propiedades de la línea de conexión:

Código
                            
Copiar
Insertar
flowchart LR A e1@==> B e1@{ animate: true }

Esto indica a Mermaid que la línea de conexión e1 está animada.

Elegir el tipo de animación

En la versión inicial, se admiten dos velocidades de animación: fast y slow. Elegir un tipo de animación concreto es una forma sencilla de habilitar la animación y establecer su velocidad de una sola vez.

Código
                            
Copiar
Insertar
flowchart LR A e1@--> B e1@{ animation: fast }

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

Animar con la sentencia classDef

También puedes animar la línea de conexión asignándole una clase y luego definiendo las propiedades de animación en una sentencia classDef. Por ejemplo:

Código
                            
Copiar
Insertar
flowchart LR A e1@--> B classDef animate stroke-dasharray: 9,5,stroke-dashoffset: 900,animation: dash 25s linear infinite; class e1 animate

En este código:

  • e1@--> 创建了一个 ID 为 e1 的连接线
  • classDef animate define una clase llamada animate, con propiedades de estilo y animación.
  • class e1 animate aplica la clase animate a la línea de conexión e1.

Nota sobre el escape de comas: al establecer la propiedad stroke-dasharray, recuerda escapar la coma como ,, ya que la coma se usa como separador en las definiciones de estilo de Mermaid.

Nuevos tipos de flecha

Admite nuevos tipos de flecha

  • Línea de conexión con círculo relleno
  • Línea de conexión con marca de cruz

Línea de conexión con círculo relleno

Código
                            
Copiar
Insertar
flowchart LR A --o B

Línea de conexión con marca de cruz

Código
                            
Copiar
Insertar
flowchart LR A --x B

Flecha multidireccional

Puedes usar flechas multidireccionales, por ejemplo:

Código
                            
Copiar
Insertar
flowchart LR A o--o B B <--> C C x--x D

Longitud de la línea de conexión

Cada nodo del diagrama de flujo se asigna a un nivel en el gráfico renderizado según los nodos a los que está conectado, es decir, un nivel vertical u horizontal (según la dirección del diagrama de flujo). De forma predeterminada, un enlace puede abarcar cualquier número de niveles, pero puedes pedir que una conexión sea más larga que las demás añadiendo guiones adicionales en la definición de la conexión.

En este ejemplo, se han añadido dos guiones adicionales a la conexión del nodo B al nodo E, de modo que abarca dos niveles más que un enlace normal:

Código
                            
Copiar
Insertar
flowchart TD A[Start] --> B{Is it?} B -->|Yes| C[OK] C --> D[Rethink] D --> B B ---->|No| E[End]
Nota: una conexión puede ser más larga que el número de niveles solicitado al motor de renderizado, para adaptarse a otras solicitudes.

Cuando la etiqueta de la conexión se escribe en medio de la conexión, hay que añadir guiones adicionales a la derecha de la conexión. Este ejemplo es equivalente al anterior:

Código
                            
Copiar
Insertar
flowchart TD A[Start] --> B{Is it?} B -->|Yes| C[OK] C --> D[Rethink] D --> B B -- No ----> E[End]

Para las líneas punteadas o los enlaces gruesos, los caracteres que se deben añadir son el signo igual o el punto, como se muestra en la siguiente tabla:

Longitud 1 2 3
Conexión normal --- ---- -----
Conexión normal con flecha --> ---> ---->
Conexión gruesa === ==== =====
Conexión gruesa con flecha ==> ===> ====>
Línea punteada -.- -..- -...-
Línea punteada con flecha -.- -..-> -...->

Caracteres especiales

Puedes poner el texto entre comillas para renderizar caracteres más problemáticos. Como se muestra en el siguiente ejemplo:

Código
                            
Copiar
Insertar
flowchart LR id1["This is the (text) in the box"]

Codificación de entidades para escapar caracteres

Puedes escapar caracteres con la sintaxis del ejemplo.

Código
                            
Copiar
Insertar
flowchart LR A["A double quote:#quot;"] --> B["A dec char:#9829;"]

El número indicado es decimal, por lo que # se puede codificar como #35. También se admite el uso de nombres de caracteres HTML.

Subgrafo

                            
Copiar
Insertar
subgraph title graph definition end

A continuación se muestra un ejemplo:

Código
                            
Copiar
Insertar
flowchart TB c1-->a2 subgraph one a1-->a2 end subgraph two b1-->b2 end subgraph three c1-->c2 end

También puedes establecer un id para el subgrafo.

Código
                            
Copiar
Insertar
flowchart TB c1-->a2 subgraph ide1 [one] a1-->a2 end

Diagrama de flujo

Con los gráficos de tipo diagrama de flujo, también puedes establecer líneas de conexión hacia y desde subgrafos, como en el siguiente diagrama de flujo.

Código
                            
Copiar
Insertar
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

Dirección del subgrafo

Al usar el tipo diagrama de flujo, puedes usar una sentencia de dirección para establecer la dirección de renderizado del subgrafo, como se muestra a continuación:

Código
                            
Copiar
Insertar
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

Limitaciones

Si algún nodo del subgrafo se conecta al exterior, se ignora la dirección del subgrafo. De lo contrario, el subgrafo hereda la dirección del gráfico principal:

Código
                            
Copiar
Insertar
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

Cadena Markdown

La cadena Markdown mejora los diagramas de flujo y los mapas mentales al ofrecer un tipo de cadena más flexible, que admite opciones de formato de texto como negrita y cursiva, y permite dividir el texto automáticamente dentro de la etiqueta.

Código
                            
Copiar
Insertar
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
  • Para poner el texto en negrita, usa dos asteriscos (**) antes y después del texto.
  • La cursiva usa un solo asterisco (*) antes y después del texto.
  • Con las cadenas tradicionales, necesitas añadir la etiqueta <br> para que el texto se divida en el nodo. Sin embargo, la cadena Markdown divide el texto automáticamente cuando es demasiado largo, y basta con usar un salto de línea en lugar de la etiqueta <br> para comenzar una nueva línea.

Esta función se aplica a las etiquetas de nodo, las etiquetas de línea de conexión y las etiquetas de subgrafo

Se puede desactivar la división automática de línea usando una sintaxis específica

Código
                            
Copiar
Insertar
--- config: markdownAutoWrap: false --- graph LR

Comentario

Puedes introducir comentarios en el diagrama de flujo; el editor los ignorará. El comentario debe ocupar una línea propia y empezar con doble signo de porcentaje (%%). Todo el texto desde el inicio del comentario hasta la línea siguiente se considerará comentario, incluida cualquier sintaxis del diagrama de flujo.

Código
                            
Copiar
Insertar
flowchart LR %% this is a comment A -- text --> B{node} A -- text --> B -- text2 --> C

Estilo y clases

Estilo de enlace

Puedes establecer el estilo de los enlaces. Por ejemplo, puede que quieras diseñar un enlace que retrocede en el proceso; como los enlaces no tienen ID como los nodos, hay que decidir de otra forma el estilo que debe usar el enlace. Usa el número de orden con el que se definió el enlace, o usa un valor predeterminado para aplicarlo a todos los enlaces.

                            
Copiar
Insertar
linkStyle 3 stroke:#ff3,stroke-width:4px,color:red;

También puedes añadir estilo a varios enlaces separando los números de enlace con comas en una sola sentencia:

                            
Copiar
Insertar
linkStyle 1,2,7 color:blue;

Establecer el estilo de curva de la línea de conexión

Si el método predeterminado no satisface tus necesidades, puedes establecer un estilo de curva para las líneas de conexión entre elementos. Los estilos de curva disponibles incluyen basis, bumpX, bumpY, cardinal, catmullRom, linear, monotoneX, monotoneY, natural, step, stepAfter y stepBefore.

En el siguiente ejemplo, un gráfico de izquierda a derecha usa el estilo de curva stepBefore.

                            
Copiar
Insertar
%%{ init: { 'flowchart': { 'curve': 'stepBefore' } } }%% graph LR

Establecer el estilo del nodo

Puedes establecer un estilo específico para un nodo, como un borde más grueso o un color de fondo diferente.

Código
                            
Copiar
Insertar
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

Clase

Es más cómodo que definir el estilo cada vez: define una clase de estilo y adjúntala a los nodos que necesiten una apariencia diferente.

La definición de clase es la siguiente:

                            
Copiar
Insertar
classDef className fill:pink,stroke:#333,stroke-width:4px;

Además, también puedes definir el estilo de varias clases en una sola sentencia:

                            
Copiar
Insertar
classDef firstClassName,secondClassName font-size:12pt;

Adjuntar una clase a un nodo se hace así:

                            
Copiar
Insertar
class nodeId1 className;

También puedes adjuntar una clase a una lista de nodos en una sola sentencia:

                            
Copiar
Insertar
class nodeId1,nodeId2 className;

Para añadir clases puedes usar el operador ::: para adjuntar el nombre de la clase al nodo, como se muestra a continuación:

Código
                            
Copiar
Insertar
flowchart LR A:::someclass --> B classDef someclass fill:#f96

Esta forma se puede usar al declarar varios enlaces entre nodos:

Código
                            
Copiar
Insertar
flowchart LR A:::foo & B:::bar --> C:::foobar classDef foo stroke:#f00 classDef bar stroke:#0f0 classDef foobar stroke:#00f

  • En las declaraciones de gráficos, ahora las sentencias también pueden no terminar en punto y coma. A partir de la versión 0.2.16, terminar las sentencias de gráfico con punto y coma es solo opcional. Por lo tanto, la siguiente declaración de gráfico también es válida, igual que la declaración de gráfico antigua.
  • Se permite un espacio entre vértices y enlaces. Sin embargo, no debe haber ningún espacio entre un vértice y su texto, ni entre un enlace y su texto. La declaración de gráfico antigua también sigue siendo válida, por lo que esta nueva función es opcional y tiene como objetivo mejorar la legibilidad.

A continuación se muestra la nueva declaración de línea de conexión, que también es válida igual que la declaración de línea de conexión antigua.

Código
                            
Copiar
Insertar
flowchart LR A[Hard edge] -->|Link text| B(Round edge) B --> C{Decision} C -->|One| D[Result one] C -->|Two| E[Result two]