在 ggnet2 中,我正在努力为基于连续节点属性的节点添加灰度着色。这里有2个变量来说明。
> get.vertex.attribute(netshenzhen,"day")
# num [1:235] 47 17 16 12 18 48 42 15 20 38 ...
> str(get.vertex.attribute(netshenzhen,"source"))
# chr [1:235] "Traveled to Hubei" "Traveled to Hubei" "Traveled to Hubei" ...
如果我输入 ggnet2(netshenzhen, label = T,color = "day")
,这里是生成的图。但是 "天 "是一个连续变量,我想在其上添加灰度(颜色越深,"天 "越多)。另外,我也搞不懂这个调色板是怎么来的,如果我在数据中附加其他连续属性,也会得到类似的结果。
如果我使用一个因子来代替,它的工作原理和ggnet2包中介绍的一样。但我真的很想在灰度上增加一个连续的节点属性。
我见过用手工编码解决这个问题的方法,用的是 统计网自己的可视化工具. 但我想知道是否有简单(r)的解决方案,使用ggnet?
我对R和编程不是很精通。所以非常感谢有行到行注释解释的示例代码。谢谢你!在ggnet2中,我是一个很简单的(r)解决方案。
你好~看来你问题中的两张图是倒置的:第二张图是你得到的,如果你进行 不 传递一个因子变量,比如你的 source
变量,节点的灰度着色就是默认的情况。
节点的灰度颜色是默认的,如果你给了 ggnet2
a color
变量,而不是由颜色名称组成。
下面是如何匹配一个连续(数字)变量,如 day
变成灰度颜色,然后将其传递给 ggnet2
. 您所感兴趣的行是创建了 day_gray
顶点属性。
library(GGally)
library(network)
n <- network(sna::rgraph(10))
network.vertex.names(n) <- sample(letters, 10)
n %v% "day" <- sample(1:10, 10)
n %v% "day_gray" <- gray.colors(10)[ n %v% "day" ]
ggnet2(n, label = TRUE, color = "day_gray")
对于更灵活的解决方案(如果你需要比上面更高级的东西),我推荐使用 ggraph
包,或 ggnetwork
包。