如何在R的igraph中按数据类型为顶点设不同颜色并显示名称
解决方案
关键修改点
- 按资产类型设置顶点颜色:先为每个顶点标记所属类型,再根据类型分配对应颜色
- 仅显示文字顶点:将顶点形状设为
"none",通过顶点标签展示名称,用标签颜色区分类型 - 修正颜色赋值逻辑:替换原代码中未定义的变量,改用顶点索引范围直接匹配资产类型
修改后完整代码
library(Hmisc) # 用于相关矩阵 library(corrplot) # 用于相关矩阵 library("Spillover") library(readxl) library("xts") library("zoo") library("ggplot2") library("nets") library("MASS") library("igraph") library("reshape") # 用于"melt"函数/聚类网络 library("writexl") # 计算动态相依性(直接边表示格兰杰因果关系) # 计算同期相依性(间接边表示偏相关关系) stock <- table[1:55, 1:55] forex <- table[56:95, 56:95] commodities <- table[96:116, 96:116] dim(stock); dim(forex); dim(commodities) View(stock); View(forex); View(commodities) # 构建完整网络 network.spill <- graph.adjacency(table, mode='directed') # 计算网络指标 degree <- degree(network.spill) # 邻接边数量 between <- betweenness(network.spill) close <- closeness(network.spill, mode = "all") autorsco <- authority.score(network.spill)$vector eccentry <- eccentricity(network.spill, mode = "all") measures <- cbind(as.matrix(degree), as.matrix(between), as.matrix(close), as.matrix(autorsco), as.matrix(eccentry)) View(measures) # -------------------------- 核心修改部分 -------------------------- # 1. 为每个顶点分配类型标签 V(network.spill)$type <- case_when( V(network.spill)$name %in% rownames(table)[1:55] ~ "stock", V(network.spill)$name %in% rownames(table)[56:95] ~ "forex", V(network.spill)$name %in% rownames(table)[96:116] ~ "commodities" ) # 2. 根据类型设置标签颜色(隐藏顶点后,用标签颜色区分分组) V(network.spill)$label.color <- ifelse(V(network.spill)$type == "stock", "gold", ifelse(V(network.spill)$type == "forex", "red", "darkgreen")) # 3. 隐藏圆形顶点,仅显示文字标签 V(network.spill)$shape <- "none" # 调整标签大小(可按需修改) V(network.spill)$label.cex <- 0.6 # 边的设置保留原逻辑 E(network.spill)$name=1:116 # ------------------------------------------------------------------- # 绘制网络图 par(mfcol = c(1, 1)) plot(network.spill, layout = layout_nicely(network.spill), edge.curved = 0.2, edge.arrow.mode=0.5, edge.arrow.size=1.5)
代码说明
- 类型标签分配:通过
case_when匹配顶点名称对应的资产类型,确保每个顶点被正确归类 - 颜色设置:股票用金色、外汇用红色、大宗商品用深绿色,可自行修改颜色代码适配需求
- 隐藏顶点:
vertex.shape = "none"取消圆形顶点显示,仅保留文字标签,标签颜色直接对应资产类型,直观区分不同分组
内容的提问来源于stack exchange,提问作者Diego Gómez Melo
相关产品推荐
相关产品推荐

