Constructor for GeomNodeSpace ggproto objects.
A wrapper around geom_point that enables direct use of node attributes stored in GraphSpace objects as aesthetics.
This geom is designed to map node-level attributes (e.g., fill,
size) or any aesthetics supported by GeomPoint.
Usage
geom_nodespace(
mapping = NULL,
data = NULL,
stat = "identity",
position = "identity",
...,
na.rm = FALSE,
show.legend = NA,
inherit.aes = FALSE
)Arguments
- mapping
Set of aesthetic mappings created by
ggplot2::aes(). These mappings override global aesthetics and are not inherited from the top-level plot.- data
A GraphSpace object.
- stat
The statistical transformation to use on the data. Defaults to
identity.- position
Position adjustment, either as a string or the result of a call to a position adjustment function.
- ...
Additional parameters passed to the underlying drawing function in GeomNodeSpace.
- na.rm
Logical. Should missing values be removed? Defaults to
FALSE.- show.legend
Logical or a named logical vector indicating whether this layer should be included in legends.
- inherit.aes
Logical. If
FALSE(default), the layer will use aesthetics defined inmapping.
Value
A ggplot2 layer that renders node glyphs defined by GeomNodeSpace.
Aesthetics
geom_nodespace() understands geom_point aesthetics.
If these aesthetics are not explicitly provided in aes(), they
are automatically retrieved from the GraphSpace object.
x, y | Required (automatically supplied). |
fill | Node interior colour (see aes_colour_fill_alpha). |
colour | Node border colour (see aes_colour_fill_alpha). |
alpha | Transparency (see aes_colour_fill_alpha). |
shape | Node shape (see points and aes_linetype_size_shape). |
size | Node size (see drawing section and aes_linetype_size_shape). |
stroke | Node line width (see gg_par and aes_linetype_size_shape). |
Required aesthetics x and y are supplied from the
GraphSpace object and do not need to be manually mapped.
Additional parameters can be passed to control fixed values for the layer.
For example: fill = "red", stroke = 3, alpha = 0.5, or shape = 21.
Drawing
The interpretation of size depends on how it is provided:
As an aesthetic: When mapped within
aes(),sizefollows the behavior of geom_point, using absolute units to ensure consistency with the plot legends.As a parameter: When set outside
aes(),sizeis treated as a percentage of the viewport ([0, 100]), scaling innpcunits. This allows nodes to resize dynamically with viewport changes.
Examples
# Make a demo igraph
library(igraph)
gtoy1 <- make_star(15, mode="out")
# Set some node attributes
V(gtoy1)$nodeSize <- runif(vcount(gtoy1), 1, 20)
V(gtoy1)$nodeColor <- rainbow(vcount(gtoy1))
# Set some variables
V(gtoy1)$user_var1 <- runif(vcount(gtoy1), 1, 3)^3
V(gtoy1)$user_var2 <- rep(c(1, 2, 3), each = 5)
# Create a GraphSpace object
gs <- GraphSpace(gtoy1, layout = layout_in_circle(gtoy1))
#> Validating the 'igraph' object...
#> Vertex attribute 'name' missing; assigning names...
#> Creating a 'GraphSpace' object...
if (FALSE) { # \dontrun{
# Example 1: Nodes scaling with the legend
# When 'size' is mapped inside aes(), it follows
# ggplot2 default behavior: sizes are translated
# to absolute units (mm) via 'scale_size()'.
ggplot() +
geom_edgespace(data = gs, arrow_offset = 0.01) +
geom_nodespace(mapping = aes(size = nodeSize, fill = user_var2),
data = gs) +
scale_size(range = c(1, 12)) +
theme(aspect.ratio = 1)
# Example 2: Nodes scaling with the viewport
# When 'size' is passed as a node attribute,
# as inherited from the igraph object, it is
# interpreted as a percentage of the plot area
# and translated to NPC units.
ggplot() +
geom_edgespace(data = gs, arrow_offset = 0.01) +
geom_nodespace(mapping = aes(fill = user_var2), data = gs) +
theme(aspect.ratio = 1)
} # }