# Create a simple graph running left to right (note
# that the whitespace is not important)
# DiagrammeR("
#   graph LR
#     A-->B
#     A-->C
#     C-->E
#     B-->D
#     C-->D
#     D-->F
#     E-->F
# ")
# Create the equivalent graph but have it running
# from top to bottom
# DiagrammeR("
#    graph TB
#    A-->B
#    A-->C
#    C-->E
#    B-->D
#    C-->D
#    D-->F
#    E-->F
# ")
# Create a graph with different node shapes and
# provide fill styles for each node
# DiagrammeR("graph LR;A(Rounded)-->B[Squared];B-->C{A Decision};
#  C-->D[Square One];C-->E[Square Two];
#  style A fill:#E5E25F;  style B fill:#87AB51; style C fill:#3C8937;
#  style D fill:#23772C;  style E fill:#B6E6E6;"
# )
# Load in the 'mtcars' dataset
# data(mtcars)
# connections <- sapply(
#  1:ncol(mtcars)
#   ,function(i) {
#      paste0(
#         i
#       ,"(",colnames(mtcars)[i],")---"
#       ,i,"-stats("
#       ,paste0(
#         names(summary(mtcars[,i]))
#         ,": "
#         ,unname(summary(mtcars[,i]))
#         ,collapse=""
#       )
#       ,")"
#    )
#  }
# )
# Create a diagram using the 'connections' object
# DiagrammeR(
#    paste0(
#      "graph TD;", "\n",
#      paste(connections, collapse = "\n"),"\n",
#      "classDef column fill:#0001CC, stroke:#0D3FF3, stroke-width:1px;" ,"\n",
#      "class ", paste0(1:length(connections), collapse = ","), " column;"
#    )
#  )
# Also with `DiagrammeR()`, you can use tags
# from `htmltools` (just make sure to use
# `class = "mermaid"`)
library(htmltools)
# diagramSpec = "
# graph LR;
#   id1(Start)-->id2(Stop);
#   style id1 fill:#f9f,stroke:#333,stroke-width:4px;
#   style id2 fill:#ccf,stroke:#f66,stroke-width:2px,stroke-dasharray: 5, 5;
# "
# html_print(tagList(
#   tags$h1("R + mermaid.js = Something Special")
#   ,tags$pre(diagramSpec)
#   ,tags$div(class="mermaid", diagramSpec)
#   ,DiagrammeR()
# ))
# Create a sequence diagram
# DiagrammeR("
# sequenceDiagram;
#    customer->>ticket seller: ask for a ticket;
#    ticket seller->>database: seats;
#    alt tickets available
#      database->>ticket seller: ok;
#      ticket seller->>customer: confirm;
#      customer->>ticket seller: ok;
#      ticket seller->>database: book a seat;
#      ticket seller->>printer: print a ticket;
#    else sold out
#      database->>ticket seller: none left;
#      ticket seller->>customer: sorry;
#    end
# ")
Run the code above in your browser using DataLab