| NetworkAtomic | R Documentation |
Core implementation for rendering a single network graph from a links
(edge list) data frame and an optional nodes (vertex metadata) data frame.
This is the workhorse behind the exported Network function –
it takes a single pair of links/nodes data frames (no
split_by support) and returns a ggplot object.
The graph is constructed via graph_from_data_frame,
laid out using igraph layout algorithms ("circle", "tree",
"grid", or any named igraph layout such as "fr" or
"kk"), and rendered with ggraph using
geom_edge_arc for links and
geom_point for nodes.
Key features include:
Directed / undirected graphs with optional arrow heads.
Link styling: variable width (weight), linetype, and colour, each constant or mapped from a column. Edge colours can follow source nodes, target nodes, or a dedicated column.
Node styling: variable size, shape, colour, and fill, each constant or column-mapped.
Community detection via igraph clustering algorithms
with convex hull, ellipse, rectangle, or circle marks from
ggforce.
Automatic labels via
geom_text_repel.
Self-loop edges drawn as direction-sensitive arcs.
NetworkAtomic(
links,
nodes = NULL,
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",
...
)
links |
A data frame containing the edge list. Must contain the
|
nodes |
An optional data frame of node metadata. When provided,
columns such as |
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. |
... |
Not used. |
A ggplot object with height and width
attributes (in inches).
Column resolution – Default column names for
from, to, and node_by are assigned when
NULL, using the first or second column of the respective
data frame. Each is validated via check_columns;
multi-column inputs are concatenated with their respective
separator (from_sep, to_sep, node_by_sep)
and force-converted to factors. Resolved columns are renamed to
the canonical names "from", "to", and "name".
Graph construction – An igraph
object is built via graph_from_data_frame
using the links data frame and (optionally) the nodes data frame.
If nodes is a string starting with "@", it is
extracted from the corresponding attribute on the links object.
Layout computation – The layout is resolved:
"circle" -> layout_in_circle,
"tree" -> layout_as_tree,
"grid" -> layout_on_grid.
Any other character string is prefixed with "layout_with_"
and looked up in the igraph namespace (e.g. "fr" ->
layout_with_fr). If layout is already an
igraph_layout_spec object it is applied directly via
layout_.
Data extraction – Vertex and edge data frames are
extracted from the igraph object via
as_data_frame. Layout coordinates are
added as x and y columns to the vertex data.
Node aesthetic assembly – Each of size,
color, shape, and fill is resolved as
either a constant value (numeric or character) or a mapping to
a column of the node data. A per-aesthetic "guide" /
"none" flag is tracked for legend construction.
Link aesthetic assembly – linewidth (weight),
linetype, and color are resolved similarly.
When link_color_by = "from", edge colours are
derived from the source node's fill (if node shape is
filled, 21–25) or colour; when "to", from the
target node.
When link_color_by names a column in the links
data frame (other than "from"/"to"), it
is mapped directly.
If directed = TRUE, a arrow is
added and end_cap is set via circle
to prevent arrow overlap with nodes. Self-loop edges receive a
direction aesthetic.
Plot initialisation – A ggraph
plot is created with layout = "manual" and vertex
coordinates from the layout.
Clustering and marks – When cluster != "none",
the specified igraph community-detection algorithm is run
(cluster_fast_greedy, cluster_walktrap,
cluster_edge_betweenness, cluster_infomap, or a
custom function). Membership overrides the aesthetic specified
by cluster_scale ("fill", "color", or
"shape") with a warning that the previous setting is
discarded. If add_mark = TRUE, a mark enclosure
(hull / ellipse / rect / circle) is drawn per cluster via the
corresponding ggforce geom.
Link rendering – geom_edge_arc
draws the edges (with configurable link_curvature) and
geom_edge_loop handles self-loop edges.
Link scales – Conditional on their guide status,
scale_edge_width_continuous,
scale_edge_linetype_discrete, and
scale_edge_color_manual /
scale_edge_color_gradientn are added for weight,
linetype, and colour legends respectively.
Node rendering – geom_point
draws the nodes with the assembled aesthetics.
Node scales – Conditional scale additions:
scale_size_continuous (range from
node_size_range), scale_color_manual,
scale_shape_manual, and scale_fill_manual, each
with their legend title and guide overrides.
Labels – When add_label = TRUE, node
identifiers are rendered via
geom_text_repel using
label_fg, label_bg, and label_bg_r.
Final theme and dimensions – Coordinate expansion,
axis labels, theme application, and legend positioning are
applied. Plot height and width are computed via
calculate_plot_dimensions and stored as
attributes.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.