0

在 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"),这是生成的图表。但是“天”是一个连续变量,我想在上面添加灰度(颜色越深,“天”越多)。此外,我无法弄清楚这个调色板的来源,如果我在数据中附加其他连续属性,我会得到类似的结果。

具有连续变量的网络图day

如果我改用一个因子,它会按照 ggnet2 包中的介绍工作。但我真的很想为灰度添加一个连续的节点属性。

具有因子变量的网络图source

我已经看到使用statnet 自己的可视化工具的手动编码解决方案。但我想知道是否有使用 ggnet 的简单(r)解决方案?

我不太擅长 R 或编程。因此,高度赞赏带有逐行注释/解释的示例代码。谢谢!

4

1 回答 1

0

嗨〜看起来你已经反转了你的问题中的两个图:如果你传递像你的source变量这样的因子变量,第二个是你得到的。

ggnet2如果您提供一个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软件包。

于 2020-04-23T10:37:39.170 回答