add_flowmap | R Documentation |
Add a flow map to a ggplot
add_flowmap(
p,
flowdat = NULL,
od = NULL,
nodes = NULL,
outline_linewidth = 0.01,
alpha = 0.8,
nodes_alpha = 0.8,
outline_col = "black",
k_nodes = NULL,
node_buffer_factor = 1.2,
node_radius_factor = 1,
edge_offset_factor = 1,
node_fill_factor = NULL,
edge_width_factor = 1.2,
arrow_point_angle = 45,
add_legend = "none",
legend_nudge_x = 0,
legend_nudge_y = 0,
legend_col = "gray"
)
p |
The plot to which the flowmap should be added. |
flowdat |
Input dataframe. See details below. |
od |
As an alternative to |
nodes |
As an alternative to |
outline_linewidth |
The linewidth of the outline of the arrows. |
alpha |
Opacity of the edges. |
nodes_alpha |
Opacity of the nodes. |
outline_col |
Color of the outline of the edges. |
k_nodes |
Number of clusters to group nodes into. If defined, nodes will be clustered hierarchically based on spatial proximity. By default, no clustering will be applied. |
node_buffer_factor |
Controls the distance between the nodes and the edges ( in multiple of the nodes' radii). |
node_radius_factor |
Controls the size of the nodes. |
edge_offset_factor |
Controls the distance between the parallel arrows. |
node_fill_factor |
Controls the downscaling of the fill of the nodes ( as to not outshine the edges ). |
edge_width_factor |
Controls the width of the edges. |
arrow_point_angle |
Controls the pointiness of the edges. |
add_legend |
Add a legend for width to the plot? Must be one of "none","bottom","top","left", or "right". (Experimental) |
legend_nudge_x |
Adjusts the horizontal position of the legend in map units. |
legend_nudge_y |
Adjusts the vertical position of the legend in map units. |
legend_col |
If |
The function requires as inputs a dataframe flowdat
which contains for every combination of two nodes a and b the coordinates of these nodes as well as the intensity of flow between those nodes in both directions (a to b, b to a). The dataframe should have the following columns:
id_a: The unique id of node a
id_b: The unique id of node b
xa: The x coordinate of node a
ya: The y coordinate of node a
xb: The x coordinate of node b
yb: The y coordinate of node b
flow_ab: The intensity of flow from node a to node b
flow_ba: The intensity of flow from node b to node a
Alternatively, the function can take as input a dataframe od
which contains the origin-destination pairs and the flow between them. The dataframe should have the following columns:
o: The unique id of the origin node
d: The unique id of the destination node
value: The intensity of flow between the origin and destination
In this case, the function also requires a dataframe nodes
which contains the coordinates of the nodes. The dataframe should have the following columns:
name: The unique id of the node
x: The x coordinate of the node
y: The y coordinate of the node
The function will impose coord_equal() on the ggplot.
Inspired by flowmap.gl.
The ggplot with an additional polygon layer for the flow arrows and an additional polygon layer for the nodes
Johannes Mast
testdata <-
data.frame(
id_a = c("X1","X2","X3","X3","X1"),
id_b = c("X8","X7","X1","X8","X7"),
xa = c(2,14,10,10,2),
ya = c(6,10,9,9,6),
xb = c(10,4,2,10,4),
yb = c(4,10,6,4,10),
flow_ab = c(2,1,1,1,1),
flow_ba = c(5,1,1,1,2)
)
library(ggplot2)
plot <- ggplot()
plot |> add_flowmap(testdata)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.