问题描述
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")
现在回答您的第二条评论:
我想可视化此矩阵,并在数字较大时将节点颜色设置为深蓝色,而数字较小时将节点颜色设置为浅蓝色
矩阵中没有节点属性。 node 和 edge 属性之间存在区别。您的矩阵是一个边列表,因此那里只有关于边(即领带)的信息。没有可用于着色节点的信息,因此不幸的是,无法准确地完成您想要的操作。
在更改节点颜色之前,必须创建节点属性。此信息可以来自单独的向量,也可以像上面一样作为属性添加到network
对象中。您可以找到有关如何进行此操作的示例here。