因此,我目前有一个在igraph中创建的社交网络图。它具有50个具有80个唯一连接的节点。每个节点都有1个属性:'A',它是1到10之间的一个随机数。是否有办法将节点的颜色设置为一件(红色),然后根据'A'的值修改阴影?
V(net)$color=V(net)$A
V(net)$color=gsub(1,"red",V(net)$color)
V(net)$color=gsub(2,"pink",V(net)$color)
我目前使用的是这种代码的一种形式,但理想情况下我想要一些东西,以使'A'的值越高,红色的阴影越暗。所以当V(net)$ A == 10时,它是真正深红色,但当V(net)$ A == 1时,它将变成几乎白色的浅粉红色。有没有无需手动将不同阴影插入上述代码中的代码?
答案 0 :(得分:1)
我认为不存在用于生成颜色阴影的基本R函数。显然,各种R包中都有这样的功能和调色板。但是我们可以改为使用以下
myShade <- function(i, n = 10) {
upper <- c(110, 0, 0)
lower <- c(255, 210, 210)
shade <- round(lower + (i - 1) * (upper - lower) / (n - 1))
paste(c("#", sprintf("%02s", as.hexmode(shade))), collapse = "")
}
barplot(table(letters[1:10]), col = sapply(1:10, myShade))
这里i
是1到10的整数,而n
是阴影的总数。但是,更一般而言,您可以将n = 1
和i
设置为[0,1]中的任何实数,这会给您带来很多阴影(由于四舍五入的缘故,不是无限多个)在shade
中。
然后upper
和lower
分别对应RGB格式的暗红色和浅红色。通过更改它们,您可以直接更改调色板。然后shade
进行插值,最后一行构造一个十六进制代码,例如
myShade(5)
# [1] "#bf7575"
那我想你可以做到
V(net)$color <- sapply(V(net)$A, myShade) # or as.numeric(V(net)$A) if V(net)$A is a character