You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R的igraph中为顶点和边分配基于Counts的统一颜色渐变?

解决方案:为igraph顶点和边添加统一的双色渐变(仿ggplot2 scale_color_gradient2)

要实现顶点和边基于Counts值的统一颜色渐变,且同值同色,核心是共享一套颜色映射规则,并将边的颜色关联到对应顶点的Counts值。以下是具体实现步骤:

步骤1:准备颜色映射规则

借助scales包创建和scale_color_gradient2逻辑一致的渐变调色板,以Counts的均值为中点,对应蓝-黄-红的渐变:

# 加载必要包
library(igraph)
library(scales)

# 复用你的代码生成图对象
data <- data.frame(Country = c("Africa", "Argentina", "Bolivia", "Chile", "France", "Guam", "Poland", "Greenland", "Switzerland", "UK", "US"), 
                   Counts = c(2,2,8,1,5,3,3,15, 15,30,35), 
                   Pillar = c(rep("SoS", 4), rep("CNES", 4), rep("STE", 3)))
data_center <- setNames(data.frame("c", 1, "Sos"), names(data))
data_vtx <- rbind(data_center, data)
data_rel <- data.frame(from = head(data_vtx$Country, 1), 
                       to = data_vtx$Country[2:12])
data_graph <- graph_from_data_frame(data_rel,  directed = FALSE, data_vtx)

# 计算Counts均值作为渐变中点
counts_mean <- mean(V(data_graph)$Counts)
# 创建渐变调色板:低数值蓝、中点黄、高数值红
pal <- gradient_n_pal(
  colors = c("blue", "yellow", "red"),
  values = c(min(V(data_graph)$Counts), counts_mean, max(V(data_graph)$Counts))
)
# 归一化Counts到0-1范围(适配调色板输入要求)
norm_counts <- (V(data_graph)$Counts - min(V(data_graph)$Counts)) / 
  (max(V(data_graph)$Counts) - min(V(data_graph)$Counts))

步骤2:为顶点和边分配统一颜色

  • 顶点颜色直接用归一化后的Counts映射到调色板
  • 边的颜色关联到其连接的非中心顶点的Counts值(你的图是星型结构,每条边连接中心和其他顶点),确保同Counts的顶点与对应边颜色完全一致:
# 获取每条边对应目标顶点的归一化Counts值
edge_norm_counts <- sapply(E(data_graph)$to, function(v) {
  norm_counts[V(data_graph)$Country == v]
})

# 绘制最终图
plot(data_graph, 
     layout = layout.fruchterman.reingold(data_graph),
     vertex.size = round(V(data_graph)$Counts/1.5, 2), 
     vertex.label.color = "black",
     edge.curved = 0.3,
     # 顶点颜色
     vertex.color = pal(norm_counts),
     # 边颜色
     edge.color = pal(edge_norm_counts)
)

关键说明

  • 所有颜色基于同一套调色板和归一化规则,彻底保证相同Counts值对应相同颜色
  • 若你的图不是星型结构,可根据需求调整边的颜色关联逻辑(比如取两端顶点的均值、最大值等)

内容的提问来源于stack exchange,提问作者Purrsia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 06:15:47