| nplot | R Documentation |
nplot() is the main function of the netplot package. It draws a network
using the grid graphics system (the same engine that powers ggplot2),
emphasizing aesthetics and providing sensible defaults that yield
out-of-the-box nice visualizations. Compared with base igraph/network
plots, nplot() auto-scales vertices and edges relative to the plotting
device, draws truly curved edges, mixes edge colors from their endpoints,
and fills the device efficiently.
nplot(
x,
layout,
vertex.size = 1,
bg.col = "transparent",
vertex.nsides = 10,
vertex.color = grDevices::hcl.colors(1),
vertex.size.range = c(0.01, 0.03, 4),
vertex.frame.color = NULL,
vertex.rot = 0,
vertex.frame.prop = 0.2,
vertex.label = NULL,
vertex.label.fontsize = NULL,
vertex.label.color = adjustcolor("black", alpha.f = 0.8),
vertex.label.fontfamily = "sans",
vertex.label.fontface = "plain",
vertex.label.show = 0.3,
vertex.label.range = c(5, 15),
edge.width = 1,
edge.width.range = c(1, 2),
edge.arrow.size = NULL,
edge.color = ~ego(alpha = 0.1, col = "gray") + alter,
edge.curvature = pi/3,
edge.line.lty = "solid",
edge.line.breaks = 5,
sample.edges = 1,
skip.vertex = FALSE,
skip.edges = FALSE,
skip.arrows = skip.edges,
add = FALSE,
zero.margins = TRUE,
edgelist
)
## S3 method for class 'igraph'
nplot(
x,
layout = igraph::layout_nicely(x),
vertex.size = igraph::degree(x, mode = "in"),
bg.col = "transparent",
vertex.nsides = 10,
vertex.color = grDevices::hcl.colors(1),
vertex.size.range = c(0.01, 0.03, 4),
vertex.frame.color = NULL,
vertex.rot = 0,
vertex.frame.prop = 0.2,
vertex.label = igraph::vertex_attr(x, "name"),
vertex.label.fontsize = NULL,
vertex.label.color = adjustcolor("black", alpha.f = 0.8),
vertex.label.fontfamily = "sans",
vertex.label.fontface = "plain",
vertex.label.show = 0.3,
vertex.label.range = c(5, 15),
edge.width = igraph::edge_attr(x, "weight"),
edge.width.range = c(1, 2),
edge.arrow.size = NULL,
edge.color = ~ego(alpha = 0.1, col = "gray") + alter,
edge.curvature = pi/3,
edge.line.lty = "solid",
edge.line.breaks = 5,
sample.edges = 1,
skip.vertex = FALSE,
skip.edges = FALSE,
skip.arrows = !igraph::is_directed(x),
add = FALSE,
zero.margins = TRUE,
edgelist
)
## S3 method for class 'network'
nplot(
x,
layout = sna::gplot.layout.kamadakawai(x, NULL),
vertex.size = sna::degree(x, cmode = "indegree"),
bg.col = "transparent",
vertex.nsides = 10,
vertex.color = grDevices::hcl.colors(1),
vertex.size.range = c(0.01, 0.03, 4),
vertex.frame.color = NULL,
vertex.rot = 0,
vertex.frame.prop = 0.2,
vertex.label = network::get.vertex.attribute(x, "vertex.names"),
vertex.label.fontsize = NULL,
vertex.label.color = adjustcolor("black", alpha.f = 0.8),
vertex.label.fontfamily = "sans",
vertex.label.fontface = "plain",
vertex.label.show = 0.3,
vertex.label.range = c(5, 15),
edge.width = network::get.edge.attribute(x, "weight"),
edge.width.range = c(1, 2),
edge.arrow.size = NULL,
edge.color = ~ego(alpha = 0.1, col = "gray") + alter,
edge.curvature = pi/3,
edge.line.lty = "solid",
edge.line.breaks = 5,
sample.edges = 1,
skip.vertex = FALSE,
skip.edges = FALSE,
skip.arrows = !network::is.directed(x),
add = FALSE,
zero.margins = TRUE,
edgelist
)
## S3 method for class 'matrix'
nplot(
x,
layout,
vertex.size = 1,
bg.col = "transparent",
vertex.nsides = 10,
vertex.color = grDevices::hcl.colors(1),
vertex.size.range = c(0.01, 0.03, 4),
vertex.frame.color = NULL,
vertex.rot = 0,
vertex.frame.prop = 0.2,
vertex.label = NULL,
vertex.label.fontsize = NULL,
vertex.label.color = adjustcolor("black", alpha.f = 0.8),
vertex.label.fontfamily = "sans",
vertex.label.fontface = "plain",
vertex.label.show = 0.3,
vertex.label.range = c(5, 15),
edge.width = 1,
edge.width.range = c(1, 2),
edge.arrow.size = NULL,
edge.color = ~ego(alpha = 0.1, col = "gray") + alter,
edge.curvature = pi/3,
edge.line.lty = "solid",
edge.line.breaks = 5,
sample.edges = 1,
skip.vertex = FALSE,
skip.edges = FALSE,
skip.arrows = skip.edges,
add = FALSE,
zero.margins = TRUE,
edgelist
)
## Default S3 method:
nplot(
x,
layout,
vertex.size = 1,
bg.col = "transparent",
vertex.nsides = 10,
vertex.color = grDevices::hcl.colors(1),
vertex.size.range = c(0.01, 0.03, 4),
vertex.frame.color = NULL,
vertex.rot = 0,
vertex.frame.prop = 0.2,
vertex.label = NULL,
vertex.label.fontsize = NULL,
vertex.label.color = adjustcolor("black", alpha.f = 0.8),
vertex.label.fontfamily = "sans",
vertex.label.fontface = "plain",
vertex.label.show = 0.3,
vertex.label.range = c(5, 15),
edge.width = 1,
edge.width.range = c(1, 2),
edge.arrow.size = NULL,
edge.color = ~ego(alpha = 0.1, col = "gray") + alter,
edge.curvature = pi/3,
edge.line.lty = "solid",
edge.line.breaks = 5,
sample.edges = 1,
skip.vertex = FALSE,
skip.edges = FALSE,
skip.arrows = skip.edges,
add = FALSE,
zero.margins = TRUE,
...,
edgelist
)
## S3 method for class 'netplot'
print(x, y = NULL, newpage = TRUE, legend = TRUE, ...)
x |
A graph. It supports networks stored as |
layout |
Numeric two-column matrix with the graph layout in x/y positions of the vertices. |
vertex.size |
Numeric vector of length |
bg.col |
Color of the background. |
vertex.nsides |
Numeric vector of length |
vertex.color |
Vector of length |
vertex.size.range |
Numeric vector of length 2 or 3, or |
vertex.frame.color |
Vector of length |
vertex.rot |
Vector of length |
vertex.frame.prop |
Vector of length |
vertex.label |
Character vector of length |
vertex.label.fontsize |
Numeric vector. |
vertex.label.color |
Vector of colors of length |
vertex.label.fontfamily |
Character vector of length |
vertex.label.fontface |
See grid::gpar |
vertex.label.show |
Numeric scalar. Proportion of labels to show as the
top ranking according to |
vertex.label.range |
Numeric vector of size 2 or 3. Relative scale of
|
edge.width |
Numeric vector of length |
edge.width.range |
Numeric vector of length 2, or |
edge.arrow.size |
Vector of length |
edge.color |
A vector of length |
edge.curvature |
Numeric vector of length |
edge.line.lty |
Vector of length |
edge.line.breaks |
Vector of length |
sample.edges |
Numeric scalar between 0 and 1. Proportion of edges to sample. |
skip.vertex, skip.edges, skip.arrows |
Logical scalar. When |
add |
Logical scalar. |
zero.margins |
Logical scalar. |
edgelist |
An edgelist. |
y, ... |
Ignored |
newpage |
Logical scalar. When |
legend |
Logical scalar. When |
Vertex and edge aesthetics can be set directly (passing a vector) or,
conveniently, mapped from graph attributes using a formula interface (see
the "Mapping attributes with formulas" section below). The returned object is
a grid grob, so it can be further edited with set_vertex_gpar() /
set_edge_gpar(), combined with other grid graphics (e.g. via
gridExtra::grid.arrange()), or annotated with a legend through
nplot_legend().
When x is of class matrix, it will be passed to igraph::graph_from_adjacency_matrix().
An object of class c("netplot", "gTree", "grob", "gDesc"). The object
has an additional set of attributes:
.xlim, .ylim vector of size two with the x-asis/y-axis limits.
.layout A numeric matrix of size vcount(x) * 2 with the vertices positions
.edgelist A numeric matrix, The edgelist.
In the case of nplot.default, an object of class netplot and grob (see
grid::grob) with the following slots:
children The main grob of the object.
name Character scalar. The name of the plot
.xlim and .ylim Two vectors indicating the limits of the plot
.layout A two-column matrix with the location of the vertices.
.edgelist A two-column matrix, an edgelist.
.N Integer. The number of vertices.
.M Integer. The number of edges.
The children grob contains the following two objects:
background a grob rectangule.
graph a gTree that contains each vertex and each edge
of the figure.
Several aesthetics can be mapped directly from graph attributes by passing a one-sided formula naming the attribute, instead of building the vector by hand. The mapping depends on the aesthetic:
vertex.color = ~ attr colors vertices by the vertex attribute attr.
Character/factor attributes are mapped to a categorical palette, numeric
attributes to a continuous gradient, and logical attributes to two colors.
When used this way, print()-ing the resulting plot also draws a matching
legend: a categorical key for discrete attributes and a continuous color
bar for continuous ones.
vertex.nsides = ~ attr maps each unique value of attr to a distinct
vertex shape (triangle, square, pentagon, ...).
vertex.size = ~ attr and edge.width = ~ attr scale sizes/widths from a
numeric vertex/edge attribute.
edge.color uses a different, richer formula grammar based on ego() and
alter() to mix the endpoints' colors; see netplot-formulae.
For vertex.nsides, vertex.size, and edge.width the right-hand side of
the formula is evaluated with the graph's attributes in scope, so besides
bare names you can use expressions, e.g. edge.width = ~ log1p(weight) or
vertex.size = ~ degree ^ 2.
For example, nplot(x, vertex.color = ~ gender, vertex.size = ~ degree)
colors vertices by the gender attribute and sizes them by degree. The
same attribute-mapping formulas also work in set_vertex_gpar().
nplot_base
library(igraph)
library(netplot)
set.seed(1)
x <- sample_smallworld(1, 200, 5, 0.03)
plot(x) # ala igraph
nplot(x) # ala netplot
# Mapping aesthetics from vertex attributes using formulas
V(x)$grp <- sample(letters[1:3], vcount(x), replace = TRUE)
V(x)$deg <- degree(x)
nplot(
x,
vertex.color = ~ grp, # color by the categorical attribute
vertex.nsides = ~ grp, # and give each group a distinct shape
vertex.size = ~ deg # size by a numeric attribute
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.