Simple Network Visualization
library(yulab.utils)
library(igraph)
library(ggplot2)
library(ggtangle)
library(aplot)
library(ggfun)
net <- erdos.renyi.game(10, .5)
V(net)$name = letters[1:10]
E(net)$weight = abs(rnorm(length(E(net))))
E(net)$type = sample(LETTERS[1:3], length(E(net)), replace=TRUE)
p <- ggplot(net) + geom_edge()
p
Node color and size
p1 <- p + geom_point(size=6, color='steelblue')
p2 <- p + geom_point(aes(color = label %in% letters[1:5]), size=6)
p3 <- p + geom_point(aes(size = igraph::degree(net)), color='steelblue')
p4 <- p + geom_point(aes(shape = label %in% letters[1:5]), color='steelblue', size=8)
plot_list(p1, p2, p3, p4, ncol=2)
Node label
Edge
Network with external data
Network with pies
flow_info <- data.frame(from = LETTERS[c(1,2,3,3,4,5,6)],
to = LETTERS[c(5,5,5,6,7,6,7)])
dd <- data.frame(
label = LETTERS[1:7],
v1 = abs(rnorm(7)),
v2 = abs(rnorm(7)),
v3 = abs(rnorm(7))
)
g <- igraph::graph_from_data_frame(flow_info)
p <- ggplot(g) + geom_edge()
library(scatterpie)
## scatterpie v0.2.4 Learn more at https://yulab-smu.top/
Category-Item association plot
set.seed(123)
x <- list(A = letters[1:10], B=letters[5:12], C=letters[sample(1:26, 15)])
p1 <- cnetplot(x, node_label = "none",
color_category='firebrick', color_item='steelblue')
p2 <- cnetplot(x, node_label = "all", size_category=2)
p3 <- cnetplot(x, node_label = "category")
p4 <- cnetplot(x, node_label = "item")
p5 <- cnetplot(x, node_label = "share")
p6 <- cnetplot(x, node_label = "exclusive")
plot_list(p1, p2, p3, p4, p5, p6, ncol=3, tag_levels = 'A')
node_label
can be selected items/genes to specify which
genes to be labelled and can also used to subset the graph.
g1 <- cnetplot(x, node_label = letters[1:5])
options(cnetplot_subset = TRUE)
g2 <- cnetplot(x, node_label = letters[1:5])
plot_list(g1, g2)
set.seed(123)
d <- setNames(rnorm(26), letters)
# color items/genes with associated data
p7 <- cnetplot(x, foldChange=d) +
scale_color_gradient2(name='associated data', low='darkgreen', high='firebrick')
# filter items/genes by log2FC values to label
p8 <- cnetplot(x, foldChange=d, node_labe = ">1") +
scale_color_gradient2(name='associated data', low='darkgreen', high='firebrick')
# Highlight categories
p9 <- cnetplot(x, foldChange=d, hilight=c("B", "C")) +
scale_color_gradient2(name='associated data', low='darkgreen', high='firebrick')
# label in separate layer allows more detail adjustment
p10 <- cnetplot(x, node_label="none")
p10 <- p10 + geom_cnet_label(node_label = 'all', fontface='bold')
plot_list(p7, p8, p9, p10, ncol=2, tag_levels = 'A')