Sankey Diagrams
Sankey plots illustrate the flow of information or material.
devtools::install_github("gaborcsardi/sankey")
library(sankey)
The API of the package is very simple. You can create a sankey object
with make_sankey, and plot it with sankey. make_sankey takes at
least one data frame that defines the edges of the plot. This should be a
data frame, with the starting points of the edges in the first column,
and the end point of the edges in the second column. Both must character
vectors.
Here is a simple example that shows function calls in the pkgsnap package:
edges <- read.table(stringsAsFactors = FALSE, textConnection(
" get_deps get_description
get_deps parse_deps
get_deps %||%
get_deps drop_internal
get_description pkg_from_filename
parse_deps str_trim
cran_file get_pkg_type
cran_file r_minor_version
download_urls split_pkg_names_versions
download_urls cran_file
pkg_download dir_exists
pkg_download download_urls
pkg_download filename_from_url
pkg_download try_download
restore pkg_download
restore drop_missing_deps
restore install_order
restore get_deps
split_pkg_names_versions data_frame
"))
pkgsnap_sankey <- make_sankey(edges = edges)
sankey(pkgsnap_sankey)

Several properties of the plot can be customized by setting extra columns in the data frame that define the edges, or another data frame, that defines the nodes.
Current list of graphical parameters for edges:
* colorstyle Whether the to use a solid color (col),
or gradient to plot the edges. The color of a gradient
edges is between the colors of the nodes.
* curvestyle Edge style, sin for sinusoid curves,
line for straight lines.
* col Edge color, for edges with solid colors.
* weight Edge weight. Determines the width of the edges.
Current list of graphical parameters for nodes:
* col Node color.
* size Node size.
* x Horizontal coordinates of the center of the node.
* y Vertical coordinates of the center of the node.
* shape Shape of the node. Possible values:
rectangle, point, invisible.
* lty Lite type, see par.
* srt How to rotate the label, see par.
* textcol Label color.
* label Label text. Defaults to node name.
* adjx Horizontal adjustment of the label. See
adj in the par manual.
* adjy Vertical adjustment of the label. See
adj in the par manual.
* boxw Width of the node boxes.
* cex Label size multiplication factor.
* top Vertical coordinate of the top of the node.
* center Vertical coordinate of the center of the node.
* bottom Vertical coordinate of the bottom of the node.
* pos Position of the text label, see par.
* textx Horizontal position of the text label.
* texty Vertical position of the text label.
Here is the same plot again, with some customization.
nodes <- data.frame(
stringsAsFactors = FALSE,
id = c("snap", sort(unique(c(edges[,1], edges[,2]))))
)
nodes$col <- ifelse(nodes$id %in% c("snap", "restore"), "orange", "#2ca25f")
edges$colorstyle <- "gradient"
sankey(make_sankey(nodes, edges))

We colored the nodes of the exported functions orange, and also added a color gradient along the edges.
GPL (>= 2) © Mango Solutions, January Weiner, Gábor Csárdi
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.