【问题标题】:Using color in ggnet在 ggnet 中使用颜色
【发布时间】:2020-09-20 13:13:00
【问题描述】:

我有一个这样的网络:

structure(list(myfirstcol = c(1L, 2L, 3L, 1L, 2L, 3L, 2L, 3L, 
1L), mysecondcol = c(1L, 2L, 3L, 2L, 3L, 2L, 1L, 1L, 3L), value = c(394L, 
445L, 83L, 2L, 12L, 19L, 33L, 84L, 12L)), class = "data.frame", row.names = c(NA, 
-9L))

我使用这段代码将其转换为网络对象

library(GGally)
netval1 <-
  network(netmat1_matrix, matrix.type = "edgelist",
          ignore.eval = F, names.eval = "value")

我相信我的代码应该从我的边缘列表创建一个网络并创建一个名为 value 的 tie 属性

我想可视化这个矩阵,当数字大时将节点颜色设置为深蓝色,当数字小时将节点颜色设置为浅蓝色

我试过这段代码

ggnet(netval1, color = "value")

我只得到三个节点和三个领带,一切都是黑色的。即使我将颜色替换为“蓝色”或“绿色”,也不会影响图表。

【问题讨论】:

  • 您是否安装了RColorBrewer
  • 我已经安装了那个包
  • 使用ggnet2(),而不是ggnet() - 这将为节点着色。
  • 目前尚不清楚您希望着色如何工作。 value 数字与节点的配色方案有何关系?请提供预期的输出,即使您只需要用文字描述它。
  • ggnet()和ggnet2()有什么区别?

标签: r ggplot2 ggally statnet


【解决方案1】:

当您创建network 对象时,您声明了names.eval = "value",它将“值”设置为edge 属性名称。您问我们如何更改节点的颜色。为此,您必须创建一个具有节点属性的新顶点。

这是一个例子。假设有些节点是深蓝色的,有些是蓝色的:

netval1 %v% "nodecolor" = rep(c("darkblue", "blue"))

ggnet2(netval1, color = "nodecolor")

这导致了下面的网络图:

现在回答你的第二条评论:

我想可视化这个矩阵,当数字大时将节点颜色设置为深蓝色,当数字小时将节点颜色设置为浅蓝色

您的矩阵中没有节点属性。 nodeedge 属性是有区别的。你的矩阵是一个边列表,所以那里只有关于边(即关系)的信息。没有我们可以用来为节点着色的信息,所以很遗憾,不可能完全按照您的意愿进行操作。

在更改节点颜色之前,您必须创建节点属性。此信息可以来自单独的向量,也可以作为属性添加到您的network 对象,就像我在上面所做的那样。你可以在here找到如何做到这一点的例子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-05
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 2020-11-21
    • 2011-06-17
    相关资源
    最近更新 更多