# DiagrammeR: R + mermaid.js In DiagrammeR: Graph/Network Visualization

## Description

Make diagrams in R using viz.js or mermaid.js with infrastructure provided by htmlwidgets.

## Usage

 1 DiagrammeR(diagram = "", type = "mermaid", ...) 

## Arguments

 diagram diagram in graphviz or mermaid format or a file (as a connection or file name) containing a diagram specification. The recommended filename extensions are .gv and .mmd for the Graphviz and the mermaid diagram specifications, respectively. If no diagram is provided (diagram = "") then the function will assume that a diagram will be provided by tags and DiagrammeR is just being used for dependency injection. type string - either mermaid (default) or grViz indicating the type of diagram spec and the desired parser/renderer ... any other parameters to pass to grViz or mermaid

## Value

An object of class htmlwidget that will intelligently print itself into HTML in a variety of contexts including the R console, within R Markdown documents, and within Shiny output bindings.

## Examples

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 ## Not run: # note the whitespace is not important DiagrammeR(" graph LR A-->B A-->C C-->E B-->D C-->D D-->F E-->F ") DiagrammeR(" graph TB A-->B A-->C C-->E B-->D C-->D D-->F E-->F ") 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="
" ) ,")" ) } ) 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() )) # sequence diagrams # Using this "How to Draw a Sequence Diagram" # http://www.cs.uku.fi/research/publications/reports/A-2003-1/page91.pdf # draw some sequence diagrams with DiagrammeR library(DiagrammeR) DiagrammeR(" sequenceDiagram; customer->>ticket seller: ask 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 ticket; else sold out database->>ticket seller: none left; ticket seller->>customer: sorry; end ") ## End(Not run) 

### Example output

sh: 0: Can't open /dev/null


DiagrammeR documentation built on Sept. 7, 2017, 1:06 a.m.