Title: | Plots Sankey Diagrams |
Version: | 0.1.2 |
Description: | Sankey diagrams are a powerfull and visually attractive way to visualize the flow of conservative substances through a system. They typically consists of a network of nodes, and fluxes between them, where the total balance in each internal node is 0, i.e. input equals output. Sankey diagrams are typically used to display energy systems, material flow accounts etc. Unlike so-called alluvial plots, Sankey diagrams also allow for cyclic flows: flows originating from a single node can, either direct or indirect, contribute to the input of that same node. This package, named after the Greek aphorism Panta Rhei (everything flows), provides functions to create publication-quality diagrams, using data in tables (or spread sheets) and a simple syntax. |
Depends: | R (≥ 3.5.0) |
License: | EUPL version 1.1 | EUPL version 1.2 [expanded from: EUPL] |
Encoding: | UTF-8 |
LazyData: | true |
RoxygenNote: | 7.1.1 |
Imports: | grid, grDevices, utils |
Suggests: | knitr, rmarkdown, tibble |
VignetteBuilder: | knitr |
NeedsCompilation: | no |
Packaged: | 2020-12-15 21:33:13 UTC; patrick |
Author: | Patrick Bogaart |
Maintainer: | Patrick Bogaart <pwbogaart@gmail.com> |
Repository: | CRAN |
Date/Publication: | 2020-12-18 10:20:05 UTC |
Material Flow Account sample data
Description
Dataset containing sample material flow account data, formatted for use within 'PantaRhei'
Usage
MFA
Format
A list with three data frames:
nodes
flows
colors
PantaRhei: Publication-quality Sankey diagrams
Description
Please read the user manual for more information.
Checks the mass balance of the flows involved
Description
For each substance involved, the balance per (internal) node is inspected. If outflow exceed inflow, or vice versa, a message is printed, and the function returns FALSE.
Usage
check_balance(nodes, flows, tolerance = 0.01)
Arguments
nodes |
data.frame containing the nodes definition |
flows |
data.frame containing the flows definition |
tolerance |
numeric specifying a tolerance. Default is 0.01 (1%) |
Value
TRUE if balanced, FALSE if not.
Examples
nodes <- data.frame(ID=c("A","B","C"), x=1:3, y=1:3, dir=c("right","right","stock"))
flows <- data.frame(from=c("A","B"), to=c("B","C"), quantity=c(10,10))
check_balance(nodes,flows)
Check the consistence of the nodes, flows and palette data.frames
Description
Check the consistence of the nodes, flows and palette data.frames
Usage
check_consistency(nodes, flows, palette = NULL)
Arguments
nodes |
data.frame containing the nodes definition |
flows |
data.frame containing the flows definition |
palette |
data.frame containing the palette definition |
Value
TRUE if all checks are passed; FALSE otherwise.
Examples
nodes <- data.frame(ID=c("A","B"), x=1:2, y=0)
flows <- data.frame(from="A", to="B", quantity=10)
check_consistency(nodes, flows)
Parse the information from a 'flows' definition table.
Description
This function checks the content of a flows definition, and appends some missing columns. It is mainly used internally, but can be invoked by the uses to see what it does.
Usage
parse_flows(flows, verbose = FALSE)
Arguments
flows |
data.frame containing the nodes definition |
verbose |
logical: print some information? |
Value
modified flows data.frame
Examples
Q0 <- data.frame(from="A", to="B", qty=10) # Note 'qty' as alias for quantity
str(Q0)
Q1 <- parse_flows(Q0)
str(Q1)
Parse the information from a 'nodes' definition table.
Description
This function checks the content of a nodes definition, and appends some missing columns. It is mainly used internally, but can be invoked by the uses to see what it does.
Usage
parse_nodes(nodes, verbose = FALSE)
Arguments
nodes |
data.frame containing the nodes definition |
verbose |
logical: print some information? |
Value
modified nodes data.frame
Examples
n0 <- data.frame(ID=c("A","B"), x=1:2, y=0)
str(n0)
n1 <- parse_nodes(n0)
str(n1)
Parse the information from a 'palette' definition table.
Description
This function checks the content of a palette definition, and appends some missing columns. It is mainly used internally, but can be invoked by the uses to see what it does.
Usage
parse_palette(palette, verbose = TRUE)
Arguments
palette |
data.frame containing the palette definition |
verbose |
logical: print some information? |
Value
modified palette data.frame
Examples
p0 <- data.frame(substance="any", color="red")
str(p0)
p1 <- parse_palette(p0)
str(p1) # Should be the same!
Plots a Sankey diagram
Description
Plots a Sankey diagram
Usage
sankey(
nodes,
flows,
palette,
node_style = list(),
title = NULL,
legend = FALSE,
page_margin = 0.1,
max_width = 0.2,
rmin = 0.2,
copyright = NULL,
grill = NULL,
verbose = FALSE
)
Arguments
nodes |
data.frame, containing the nodes definition |
flows |
data.frame, containing the nodes definition |
palette |
data.frame, containing the nodes definition |
node_style |
list: containing node style specifiers:
|
title |
character: plot title. use |
legend |
logical or gpar: Specifies the plotting of a legend. valid values are NULL (default; no legend), TRUE (plot a legend using standard text size and color), or the output of a call to gpar(), to control legend text size and color. |
page_margin |
numeric: Page margin. Either a scalar, an (x,y) vector or an (left,bot,rt,top) vector |
max_width |
numeric: Maximum width of the flow bundles, in fraction of the plot size |
rmin |
numeric: Minimum radius for flow path bends (as fraction of the diagram's units) |
copyright |
character: optional copyright statement? |
grill |
logical: Plot a coordinate grill? |
verbose |
logical: print some diagnostic messages? |
Value
The modified nodes data.frame
Examples
nodes <- data.frame(ID=c("A","B"), x=1:2, y=0)
flows <- data.frame(from="A", to="B", quantity=10, substance="stuff")
sankey(nodes, flows)
colors <- data.frame(substance="stuff", color="blue")
sankey(nodes, flows, colors)
sankey(nodes, flows, legend=TRUE) # Plots default legend
sankey(nodes, flows, legend=grid::gpar(fontsize=18, ncols=2)) # Large fonts; 2 columns
Format a string
Description
This function adds formatting information to a character string by storing this information as the character string's attributes. Run the example to see how it works.
Usage
strformat(s, ...)
Arguments
s |
character string to be formatted |
... |
formatting specifiers to be forwarded to gpar() |
Details
All formatting specifiers work as if gpar()
would be called.
(It is, behind the screen.)
Value
formatted string
Examples
s <- strformat("Hello, World", fontsize=18, col="red")
str(s) # show object structure