无法在 igraph 上绘制网络
Unable to plot a network on igraph
我的二进制图是基于边表的。每个顶点都是股票市场的代码(例如:BARC= Barclay's)
net_full_phase1=graph.edgelist(full_phase1, directed=FALSE)
V(net_full_phase1)$color=V(net_full_phase1)$name
V(net_full_phase1)$size=degree(net_full_phase1)
V(net_full_phase1)$color=gsub("BARC", "slategrey", V(net_full_phase1)$color)
V(net_full_phase1)$color=gsub("BNP", "blue", V(net_full_phase1)$color)
V(net_full_phase1)$color=gsub("CBK", "black", V(net_full_phase1)$color)
V(net_full_phase1)$color=gsub("WFC", "red", V(net_full_phase1)$color)
V(net_full_phase1)$color=gsub("BKIR", "orange", V(net_full_phase1)$color)
V(net_full_phase1)$color=gsub("ISP", "purple", V(net_full_phase1)$color)
V(net_full_phase1)$color=gsub("TPEIR", "lightblue", V(net_full_phase1)$color)
V(net_full_phase1)$color=gsub("SAB", "yellow", V(net_full_phase1)$color)
V(net_full_phase1)$color=gsub("BCP", "green", V(net_full_phase1)$color)
plot(net_full_phase1, layout=layout.fruchterman.reingold)
我收到此错误:
Error in symbols(x = coords[, 1], y = coords[, 2], bg = vertex.color, :
nom de couleur 'WFred' incorrecte
刚刚运行unique(as.character(V(net_full_phase1)$name))
这是结果:
"BARC" "WFC" "ISP" "TPEIR" "BCP" "SAB" "BNP" "CBK" "BKIR"
我也 运行:table(V(net_full_phase1)$color)
结果:
black blue BredP green lightblue purple red redIR slategrey WFred yellow
为什么 R 不将某些颜色视为 "BredP"、"redIR"、"WFred"?
我猜您对 gsub
的使用出了点问题。以下是我处理这个问题的方法。
# Your vector of unique names
nms <- c("BARC", "WFC", "ISP" ,"TPEIR" ,"BCP" ,"SAB" ,"BNP", "CBK" ,"BKIR")
创建与示例中顶点名称相同的小图
library(igraph)
g <- random.graph.game(length(nms), 0.5)
V(g)$name <- nms
创建查找 table 以将名称与颜色匹配:这会将颜色分配给唯一的顶点名称
lookup <- setNames(
c("slategrey", "red", "purple", "lightblue", "green", "yellow", "blue", "black", "orange"),
nms)
# have a look at object
lookup
# BARC WFC ISP TPEIR BCP
# "slategrey" "red" "purple" "lightblue" "green"
# SAB BNP CBK BKIR
# "yellow" "blue" "black" "orange"
然后我们可以使用子集 ([
) 将它们分配给顶点颜色属性
V(g)$color <- lookup[V(g)$name]
# have a look at what is produced
V(g)$color
# [1] "slategrey" "red" "purple" "lightblue" "green"
# [6] "yellow" "blue" "black" "orange"
产生
PS,我无法重现您的 gsub
结果:代码工作正常
# Your vector of unique names
nms <- c("BARC", "WFC", "ISP" ,"TPEIR" ,"BCP" ,"SAB" ,"BNP", "CBK" ,"BKIR")
nms = gsub("BARC", "slategrey", nms )
nms = gsub("BNP", "blue", nms )
nms = gsub("CBK", "black", nms )
nms = gsub("WFC", "red", nms )
nms = gsub("BKIR", "orange", nms )
nms = gsub("ISP", "purple", nms )
nms = gsub("TPEIR", "lightblue", nms )
nms = gsub("SAB", "yellow", nms )
nms = gsub("BCP", "green", nms )
# look at result
nms
# [1] "slategrey" "red" "purple" "lightblue" "green" "yellow" "blue"
# [8] "black" "orange"
我的二进制图是基于边表的。每个顶点都是股票市场的代码(例如:BARC= Barclay's)
net_full_phase1=graph.edgelist(full_phase1, directed=FALSE)
V(net_full_phase1)$color=V(net_full_phase1)$name
V(net_full_phase1)$size=degree(net_full_phase1)
V(net_full_phase1)$color=gsub("BARC", "slategrey", V(net_full_phase1)$color)
V(net_full_phase1)$color=gsub("BNP", "blue", V(net_full_phase1)$color)
V(net_full_phase1)$color=gsub("CBK", "black", V(net_full_phase1)$color)
V(net_full_phase1)$color=gsub("WFC", "red", V(net_full_phase1)$color)
V(net_full_phase1)$color=gsub("BKIR", "orange", V(net_full_phase1)$color)
V(net_full_phase1)$color=gsub("ISP", "purple", V(net_full_phase1)$color)
V(net_full_phase1)$color=gsub("TPEIR", "lightblue", V(net_full_phase1)$color)
V(net_full_phase1)$color=gsub("SAB", "yellow", V(net_full_phase1)$color)
V(net_full_phase1)$color=gsub("BCP", "green", V(net_full_phase1)$color)
plot(net_full_phase1, layout=layout.fruchterman.reingold)
我收到此错误:
Error in symbols(x = coords[, 1], y = coords[, 2], bg = vertex.color, : nom de couleur 'WFred' incorrecte
刚刚运行unique(as.character(V(net_full_phase1)$name))
这是结果:
"BARC" "WFC" "ISP" "TPEIR" "BCP" "SAB" "BNP" "CBK" "BKIR"
我也 运行:table(V(net_full_phase1)$color)
结果:
black blue BredP green lightblue purple red redIR slategrey WFred yellow
为什么 R 不将某些颜色视为 "BredP"、"redIR"、"WFred"?
我猜您对 gsub
的使用出了点问题。以下是我处理这个问题的方法。
# Your vector of unique names
nms <- c("BARC", "WFC", "ISP" ,"TPEIR" ,"BCP" ,"SAB" ,"BNP", "CBK" ,"BKIR")
创建与示例中顶点名称相同的小图
library(igraph)
g <- random.graph.game(length(nms), 0.5)
V(g)$name <- nms
创建查找 table 以将名称与颜色匹配:这会将颜色分配给唯一的顶点名称
lookup <- setNames(
c("slategrey", "red", "purple", "lightblue", "green", "yellow", "blue", "black", "orange"),
nms)
# have a look at object
lookup
# BARC WFC ISP TPEIR BCP
# "slategrey" "red" "purple" "lightblue" "green"
# SAB BNP CBK BKIR
# "yellow" "blue" "black" "orange"
然后我们可以使用子集 ([
) 将它们分配给顶点颜色属性
V(g)$color <- lookup[V(g)$name]
# have a look at what is produced
V(g)$color
# [1] "slategrey" "red" "purple" "lightblue" "green"
# [6] "yellow" "blue" "black" "orange"
产生
PS,我无法重现您的 gsub
结果:代码工作正常
# Your vector of unique names
nms <- c("BARC", "WFC", "ISP" ,"TPEIR" ,"BCP" ,"SAB" ,"BNP", "CBK" ,"BKIR")
nms = gsub("BARC", "slategrey", nms )
nms = gsub("BNP", "blue", nms )
nms = gsub("CBK", "black", nms )
nms = gsub("WFC", "red", nms )
nms = gsub("BKIR", "orange", nms )
nms = gsub("ISP", "purple", nms )
nms = gsub("TPEIR", "lightblue", nms )
nms = gsub("SAB", "yellow", nms )
nms = gsub("BCP", "green", nms )
# look at result
nms
# [1] "slategrey" "red" "purple" "lightblue" "green" "yellow" "blue"
# [8] "black" "orange"