在ggnet中使用颜色

问题描述

我有一个这样的网络:

structure(list(myfirstcol = c(1L,2L,3L,1L,1L),mysecondcol = c(1L,3L),value = c(394L,445L,83L,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")

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

解决方法

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

这里是一个例子。我们只说有些节点是深蓝色,有些是蓝色:

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

ggnet2(netval1,color = "nodecolor")

这导致下面的网络图: enter image description here

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

我想可视化此矩阵,并在数字较大时将节点颜色设置为深蓝色,而数字较小时将节点颜色设置为浅蓝色

矩阵中没有节点属性。 node edge 属性之间存在区别。您的矩阵是一个边列表,因此那里只有关于边(即领带)的信息。没有可用于着色节点的信息,因此不幸的是,无法准确地完成您想要的操作。

在更改节点颜色之前,必须创建节点属性。此信息可以来自单独的向量,也可以像上面一样作为属性添加到network对象中。您可以找到有关如何进行此操作的示例here