如何在R的igraph中为数据制作渐变色条图例
为igraph网络图添加蓝红渐变图例
可以通过基础绘图工具实现渐变条图例的添加,以下是整合了图例功能的完整代码:
# 加载依赖包 library(igraph) set.seed(62) N <- 7 fakecors <- runif(choose(N, 2)) cormat <- matrix(nrow = N, ncol = N) cormat[lower.tri(cormat)] <- fakecors diag(cormat) <- 0 cormat[upper.tri(cormat)] <- t(cormat)[upper.tri(t(cormat))] matrixnetwork <- graph_from_adjacency_matrix(cormat, mode = "undirected", weighted = TRUE) # 计算并归一化介数中心性 V(matrixnetwork)$eb <- estimate_betweenness(matrixnetwork,cutoff = 0) normalize <- function(x){(x-min(x))/(max(x)-min(x))} V(matrixnetwork)$eb_index <- round(normalize(V(matrixnetwork)$eb) * 90) + 10 # 创建蓝红渐变调色板并分配节点颜色 color_pal <- colorRampPalette(c("#4477AA","#BB4444"))(100) V(matrixnetwork)$color <- color_pal[V(matrixnetwork)$eb_index] # 调整绘图边距,为图例预留右侧空间 par(mar = c(5,4,4,6)) # 绘制网络图 plot(matrixnetwork) # 添加渐变色条图例 # 定义色条位置(x起始、y起始、x结束、y结束) legend_area <- c(1.05, 0.2, 1.1, 0.8) # 绘制垂直渐变条 image(x = 1, y = seq(0,100, length.out = 100), z = matrix(seq(0,100, length.out = 100), nrow = 1), col = color_pal, xlim = c(0,1), ylim = c(0,100), axes = FALSE, xlab = "", ylab = "", add = TRUE, useRaster = TRUE) # 添加刻度标签 axis(side = 4, at = c(0,50,100), labels = c("0%", "50%", "100%"), line = 0) # 添加图例标题 mtext("归一化介数中心性", side = 4, line = 2.5)
关键说明:
- 用
par(mar)调整绘图区域边距,保证右侧有足够空间放置图例 - 复用之前定义的蓝红渐变调色板,通过
image函数绘制垂直渐变条 - 借助
axis添加对应0%、50%、100%的刻度标签,mtext设置图例标题
内容的提问来源于stack exchange,提问作者Ana Paula Castro
相关产品推荐
相关产品推荐

