【问题标题】:ggnet: Grayscale node color for continuous node attributes?ggnet:连续节点属性的灰度节点颜色?
【发布时间】:2020-08-05 14:35:17
【问题描述】:

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

network plot with a continuous variable day

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

network plot with a factor variable source

我已经看到使用statnet's own visualization tool 的手动编码解决方案。但我想知道是否有使用 ggnet 的简单(r) 解决方案?

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

【问题讨论】:

    标签: r ggplot2 igraph ggnetwork


    【解决方案1】:

    嗨~看起来你已经在你的问题中颠倒了两个图:第二个是如果你传递一个像你的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 包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多