| Network | R Documentation |
Draws a network graph from a links (edge list) data frame and an optional
nodes (vertex metadata) data frame. The graph is constructed via
igraph, laid out with igraph layout algorithms, and
rendered with ggraph. Supports directed or
undirected edges, variable link widths/linetypes/colours, node
sizes/shapes/colours/fills, community detection with enclosure marks,
automatic node labels, and a wide range of layout options.
When links (and optionally nodes) contain a
split_by column, separate sub-plots are generated for each split
level and combined via patchwork. Unlike most
other plot types, Network operates on two data frames; splitting
may affect both.
Network(
links,
nodes = NULL,
split_by = NULL,
split_by_sep = "_",
split_nodes = FALSE,
from = NULL,
from_sep = "_",
to = NULL,
to_sep = "_",
node_by = NULL,
node_by_sep = "_",
link_weight_by = 2,
link_weight_name = NULL,
link_type_by = "solid",
link_type_name = NULL,
node_size_by = 15,
node_size_name = NULL,
node_color_by = "black",
node_color_name = NULL,
node_shape_by = 21,
node_shape_name = NULL,
node_fill_by = "grey20",
node_fill_name = NULL,
link_alpha = 1,
node_alpha = 0.95,
node_stroke = 1.5,
cluster_scale = c("fill", "color", "shape"),
node_size_range = c(5, 20),
link_weight_range = c(0.5, 5),
link_arrow_offset = 20,
link_curvature = 0,
link_color_by = "from",
link_color_name = NULL,
palette = "Paired",
palcolor = NULL,
palreverse = FALSE,
link_palette = ifelse(link_color_by %in% c("from", "to"), palette, "Set1"),
link_palcolor = if (link_color_by %in% c("from", "to")) palcolor else NULL,
directed = TRUE,
layout = "circle",
cluster = "none",
add_mark = FALSE,
mark_expand = ggplot2::unit(10, "mm"),
mark_type = c("hull", "ellipse", "rect", "circle"),
mark_alpha = 0.1,
mark_linetype = 1,
add_label = TRUE,
label_size = 3,
label_fg = "white",
label_bg = "black",
label_bg_r = 0.1,
arrow = ggplot2::arrow(type = "closed", length = ggplot2::unit(0.1, "inches")),
title = NULL,
subtitle = NULL,
xlab = NULL,
ylab = NULL,
aspect.ratio = 1,
theme = "theme_this",
theme_args = list(),
legend.position = "right",
legend.direction = "vertical",
seed = 8525,
combine = TRUE,
nrow = NULL,
ncol = NULL,
byrow = TRUE,
axes = NULL,
axis_titles = axes,
guides = NULL,
design = NULL,
...
)
links |
A data frame containing the edge list. Must contain the
|
nodes |
An optional data frame of node metadata. When provided,
columns such as |
split_by |
The column(s) to split data by and plot separately. |
split_by_sep |
The separator for multiple split_by columns. See |
split_nodes |
A logical value. When |
from |
A character string specifying the column name in
|
from_sep |
A character string to join multiple |
to |
A character string specifying the column name in
|
to_sep |
A character string to join multiple |
node_by |
A character string specifying the column name in
|
node_by_sep |
A character string to join multiple
|
link_weight_by |
A numeric value or a character string. If
numeric, all edges receive that constant line width. If a column
name, the edge line width is mapped to that column. Default
|
link_weight_name |
A character string for the link weight legend
title. When |
link_type_by |
A character string or a column name specifying
the edge linetype. Can be |
link_type_name |
A character string for the link linetype legend
title. When |
node_size_by |
A numeric value or a character string. If
numeric, all nodes receive that constant point size. If a column
name, the size is mapped to that column. Default |
node_size_name |
A character string for the node size legend
title. When |
node_color_by |
A character string specifying the node colour.
If a colour name or hex code (e.g. |
node_color_name |
A character string for the node colour legend
title. When |
node_shape_by |
A numeric value or a character string. If
numeric, all nodes receive that constant shape (see
|
node_shape_name |
A character string for the node shape legend
title. When |
node_fill_by |
A character string specifying the node fill
colour. If a colour name or hex code (e.g. |
node_fill_name |
A character string for the node fill legend
title. When |
link_alpha |
A numeric value specifying the transparency
(alpha) of the edge lines. Between |
node_alpha |
A numeric value specifying the fill transparency
of the nodes. Only applies when |
node_stroke |
A numeric value specifying the border stroke
width of the node points. Default |
cluster_scale |
A character string specifying which node
aesthetic is overridden by cluster membership. One of
|
node_size_range |
A numeric vector of length 2 giving the
minimum and maximum node size (in ggplot2 point units) when
|
link_weight_range |
A numeric vector of length 2 giving the
minimum and maximum edge line width (in mm) when
|
link_arrow_offset |
A numeric value (in points) specifying the
offset distance for the arrow end cap from the target node.
Prevents arrow heads from overlapping the node points. Only
relevant when |
link_curvature |
A numeric value controlling the curvature of
the edges. |
link_color_by |
A character string controlling how edge colour is determined. Options:
|
link_color_name |
A character string for the edge colour legend
title. Only used when |
palette |
A character string specifying the palette to use.
A named list or vector can be used to specify the palettes for different |
palcolor |
A character string specifying the color to use in the palette.
A named list can be used to specify the colors for different |
palreverse |
A logical value indicating whether to reverse the palette. Default is FALSE. |
link_palette |
A character string specifying the palette for
edge colours when they are mapped. When |
link_palcolor |
A character vector specifying custom colours
for the edge palette. When |
directed |
A logical value. When |
layout |
A character string or an |
cluster |
A character string specifying the community detection
algorithm. One of |
add_mark |
A logical value. When |
mark_expand |
A |
mark_type |
A character string specifying the mark geometry.
One of |
mark_alpha |
A numeric value for the fill transparency of
cluster marks. Default |
mark_linetype |
A numeric or character value specifying the
border line type of the cluster marks. Default |
add_label |
A logical value. When |
label_size |
A numeric value for the font size of node labels.
Scaled by the theme base size. Default |
label_fg |
A character string specifying the text colour of
node labels. Default |
label_bg |
A character string specifying the background colour
of node labels. Default |
label_bg_r |
A numeric value specifying the background box
radius (as a fraction of label height). Passed to
|
arrow |
A |
title |
A character string specifying the title of the plot. A function can be used to generate the title based on the default title. This is useful when split_by is used and the title needs to be dynamic. |
subtitle |
A character string specifying the subtitle of the plot. |
xlab |
A character string specifying the x-axis label. |
ylab |
A character string specifying the y-axis label. |
aspect.ratio |
A numeric value specifying the aspect ratio of the plot. |
theme |
A character string or a theme class (i.e. ggplot2::theme_classic) specifying the theme to use. Default is "theme_this". |
theme_args |
A list of arguments to pass to the theme function. |
legend.position |
A character string specifying the position of the legend.
if |
legend.direction |
A character string specifying the direction of the legend. |
seed |
The random seed to use. Default is 8525. |
combine |
Whether to combine the plots into one when facet is FALSE. Default is TRUE. |
nrow |
A numeric value specifying the number of rows in the facet. |
ncol |
A numeric value specifying the number of columns in the facet. |
byrow |
A logical value indicating whether to fill the plots by row. |
axes |
A string specifying how axes should be treated. Passed to
|
axis_titles |
A string specifying how axis titltes should be treated. Passed to
|
guides |
A string specifying how guides should be treated in the layout. Passed to
|
design |
Specification of the location of areas in the layout, passed to |
... |
Additional arguments. |
A ggplot object (no split_by), a
patchwork object (combine = TRUE), or a named list of
ggplot objects (combine = FALSE), each with
height and width attributes in inches.
When split_by is provided:
Column validation – The split_by column is
validated in links via check_columns,
force-converted to a factor, and empty levels are dropped.
Node split – If split_nodes = TRUE and
nodes is provided, the same split_by column is
validated in nodes. It must be identical in name to the
links split_by or an error is raised. Empty levels are
also dropped.
Data splitting – The links data frame is
split by the split_by levels into a named list,
preserving factor level order.
Attach node splits – If split_nodes = TRUE,
the nodes data frame is split identically. Each split's
node data is attached as the "nodes" attribute on the
corresponding links split.
Dispatch to atomic – NetworkAtomic is
called for each split. The nodes argument is passed as
"@nodes" when split_nodes = TRUE so that it is
extracted from the attribute. If title is a function, it
receives the split level name for dynamic title generation.
Combination – Results are combined via
combine_plots() (when combine = TRUE) or
returned as a named list of ggplot objects.
# Create example data
actors <- data.frame(
name = c("Alice", "Bob", "Cecil", "David", "Esmeralda"),
age = c(48, 33, 45, 34, 21),
shape = c(21, 22, 21, 22, 23),
gender = c("F", "M", "F", "M", "F")
)
relations <- data.frame(
from = c("Bob", "Cecil", "Cecil", "David", "David", "Esmeralda", "Bob", "Alice",
"Cecil", "David"),
to = c("Alice", "Bob", "Alice", "Alice", "Bob", "Alice", "Bob", "Alice", "Cecil",
"David"),
friendship = c(4, 5, 5, 2, 1, 1, 2, 1, 3, 4),
type = c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2)
)
# Basic network
Network(relations, actors)
# Blank theme with no coordinate axes
Network(relations, actors, theme = "theme_blank",
theme_args = list(add_coord = FALSE))
# Mapped aesthetics with custom layout
Network(relations, actors,
link_weight_by = "friendship",
node_size_by = "age",
link_weight_name = "FRIENDSHIP",
node_fill_by = "gender",
link_color_by = "to",
link_type_by = "type",
node_color_by = "black",
layout = "circle",
link_curvature = 0.2)
# Tree layout with clustering and marks
Network(relations, actors, layout = "tree",
directed = FALSE, cluster = "fast_greedy",
add_mark = TRUE)
# Split by a column
Network(relations, actors, split_by = "type")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.