尝试重新创建网络,如何为特定边分配边权重?
Attempting to recreate a network, how to assign edge weight to specific edges?
所以我的任务是重新创建一个特定的网络,如下所示:
虽然我已经能够弄清楚如何使用节点,但我不确定如何为每条边分配宽度。我假设它应该类似于存储为向量的节点 color/shape 来完成。但是我怎么知道确切的边缘是什么?
library(sna)
hw2 <- rbind(
# 1 2 3 4 5 6 7 8 932 1 2 3 4 8 0 2
c(0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),
c(1,0,1,1,0,0,0,1,0,0,0,0,0,1,1,1,1),
c(1,1,0,1,0,0,0,1,1,0,0,0,0,1,0,0,0),
c(1,1,1,0,0,0,0,1,0,0,0,0,1,1,0,0,0),
c(1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0),
c(1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0),
c(1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0),
c(1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0),
c(1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
c(1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
c(1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0),
c(1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
c(1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0),
c(1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0),
c(1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
c(1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
c(1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
)
#Labels
rownames(hw2) <- c("a1","a2","a3","a4","a5","a6","a7","a8","a9","a32","a11","a12","a13","a14","a18","a20","a22")
colnames(hw2) <- c("a1","a2","a3","a4","a5","a6","a7","a8","a9","a32","a11","a12","a13","a14","a18","a20","a22")
#Colors
net_col <- c(rep("steelblue",8),rep("lightcoral",2),rep("steelblue",8))
edge_col <- c(rep("blue4",) )
#Shape
net_size <-c(rep(4,8),rep(50,2),rep(4,8))
#Network
net_hw2 <- network(hw2,matrix.type="adjacency")
#Graph 1 , similar to existing graph
gplot(net_hw2,vertex.col = net_col,usearrows = F,displaylabels = T,label.pos = 5,
vertex.cex = 3, vertex.sides = net_size)
您可以使用 gplot 的 edge.lwd 参数为边缘分配宽度。为了匹配您的目标图,我还将使用 edge.col 分配颜色。唯一棘手的部分是弄清楚哪条边是哪条边。我将为 one 设置边缘宽度和颜色
边缘。之后,我会让你去调整其他的。
您可以使用 as.edgelist(net_hw2)
获取所有边。这会根据节点的 数量 给出边。您可以使用列表将节点号与其名称匹配
rownames(hw2)
。我将使用 a3 和 a9 之间的边作为示例。该边缘比其他大多数边缘都厚,并且是黄色而不是蓝色。查看 rownames(hw2)
,我们看到 a3 是节点 3,a9 是节点 9。查看 as.edgelist(net_hw2)
的输出,我们看到边 29 和 51 连接这些节点。
我将制作一个颜色和宽度的矢量,默认颜色为海军蓝,默认宽度为 1。
LWD = rep(1, nrow(as.edgelist(net_hw2)))
COL = rep("navy", nrow(as.edgelist(net_hw2)))
现在我们可以显式更改连接 a3 和 a9 的边的颜色和宽度
LWD[29] = 8
COL[29] = "yellow"
LWD[51] = 8
COL[51] = "yellow"
现在你可以在情节中使用它了
gplot(net_hw2,vertex.col = net_col,usearrows = F, displaylabels = T,
label.pos = 5, vertex.cex = 3, vertex.sides = net_size,
edge.col=COL, edge.lwd=LWD)
现在我们在 a3 和 a9 之间有一个漂亮的黄色宽边。
您可以用相同的方式更改任何其他边的颜色和宽度。
所以我的任务是重新创建一个特定的网络,如下所示:
虽然我已经能够弄清楚如何使用节点,但我不确定如何为每条边分配宽度。我假设它应该类似于存储为向量的节点 color/shape 来完成。但是我怎么知道确切的边缘是什么?
library(sna)
hw2 <- rbind(
# 1 2 3 4 5 6 7 8 932 1 2 3 4 8 0 2
c(0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),
c(1,0,1,1,0,0,0,1,0,0,0,0,0,1,1,1,1),
c(1,1,0,1,0,0,0,1,1,0,0,0,0,1,0,0,0),
c(1,1,1,0,0,0,0,1,0,0,0,0,1,1,0,0,0),
c(1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0),
c(1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0),
c(1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0),
c(1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0),
c(1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
c(1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
c(1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0),
c(1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
c(1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0),
c(1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0),
c(1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
c(1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
c(1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
)
#Labels
rownames(hw2) <- c("a1","a2","a3","a4","a5","a6","a7","a8","a9","a32","a11","a12","a13","a14","a18","a20","a22")
colnames(hw2) <- c("a1","a2","a3","a4","a5","a6","a7","a8","a9","a32","a11","a12","a13","a14","a18","a20","a22")
#Colors
net_col <- c(rep("steelblue",8),rep("lightcoral",2),rep("steelblue",8))
edge_col <- c(rep("blue4",) )
#Shape
net_size <-c(rep(4,8),rep(50,2),rep(4,8))
#Network
net_hw2 <- network(hw2,matrix.type="adjacency")
#Graph 1 , similar to existing graph
gplot(net_hw2,vertex.col = net_col,usearrows = F,displaylabels = T,label.pos = 5,
vertex.cex = 3, vertex.sides = net_size)
您可以使用 gplot 的 edge.lwd 参数为边缘分配宽度。为了匹配您的目标图,我还将使用 edge.col 分配颜色。唯一棘手的部分是弄清楚哪条边是哪条边。我将为 one 设置边缘宽度和颜色 边缘。之后,我会让你去调整其他的。
您可以使用 as.edgelist(net_hw2)
获取所有边。这会根据节点的 数量 给出边。您可以使用列表将节点号与其名称匹配
rownames(hw2)
。我将使用 a3 和 a9 之间的边作为示例。该边缘比其他大多数边缘都厚,并且是黄色而不是蓝色。查看 rownames(hw2)
,我们看到 a3 是节点 3,a9 是节点 9。查看 as.edgelist(net_hw2)
的输出,我们看到边 29 和 51 连接这些节点。
我将制作一个颜色和宽度的矢量,默认颜色为海军蓝,默认宽度为 1。
LWD = rep(1, nrow(as.edgelist(net_hw2)))
COL = rep("navy", nrow(as.edgelist(net_hw2)))
现在我们可以显式更改连接 a3 和 a9 的边的颜色和宽度
LWD[29] = 8
COL[29] = "yellow"
LWD[51] = 8
COL[51] = "yellow"
现在你可以在情节中使用它了
gplot(net_hw2,vertex.col = net_col,usearrows = F, displaylabels = T,
label.pos = 5, vertex.cex = 3, vertex.sides = net_size,
edge.col=COL, edge.lwd=LWD)
现在我们在 a3 和 a9 之间有一个漂亮的黄色宽边。 您可以用相同的方式更改任何其他边的颜色和宽度。