在绘制网络图之前,我试图使用gsub将Igraph顶点变量中的值更改为颜色。
问题是我的图表有3个我关心的值,还有很多其他我想要分组为"其他"并指定1种颜色。
例如,如果我的数据如下:
Name........Value
A............1
B............2
C............3
D............4
E............5
我的代码如下:
V(g)$color=V(g)$value #assign the "Value" attribute as the vertex color
V(g)$color=gsub("1","red",V(g)$color) #1 will be red
V(g)$color=gsub("2","blue",V(g)$color) #2 will be blue
V(g)$color=gsub("3", "yellow", V(DMedge)$color) #3 is yellow
我可以添加哪些代码来使4和5成为其他颜色(例如绿色)?非常感谢您的帮助!
答案 0 :(得分:5)
我会避免sub
(这不是关于匹配模式)并执行:
my.colors <- c("red", "blue", "yellow", "green")
V(g)$color <- my.colors[match(V(g)$value, c(1, 2, 3), nomatch = 4)]
答案 1 :(得分:2)
假设在进行了初始替换之后,剩下的唯一数字是你想要成为一种统一颜色的数字,你可以使用regex
匹配所有连续数字并为它们添加相同的颜色。
V(g)$color=gsub("\\d+", "green",V(g)$color)
请参阅this page了解gsub
正则表达式。
答案 2 :(得分:1)
看起来这就足以满足您的目标:
x <- c("1","2","3","4")
gsub("4|5", "green", x)
[1] "1" "2" "3" "green" "green"
或者这个
gsub("[^1-3]", "green", x)
[1] "1" "2" "3" "green" "green"
然而,正如在其他答案中指出的那样,设置查找表将数字映射到颜色并使用match
确定颜色似乎更好。