如何仅使用预安装的图形包来增加网络虚拟化图中的边缘宽度?

How can I increase edge width in network virtualisaton plot using only the pre-installed Graphics package?

我编写了以下代码,它采用节点矩阵(x、y 坐标)和二次邻接矩阵(边)并绘制网络虚拟化图。

plotGraph <- function(){

    coordinates <- matrix(rexp(50), 10)
    adjacency <- matrix(c(0,1,0,0,2,0,1,0,0,2,1,0,1,0,0,1,0,2,0,1,0,1,2,0,1,1,1,0,1,0), nrow=nrow(coordinates), ncol=nrow(coordinates))

    x11()
    plot(coordinates, main="Network Visualisation", xlab="coordinates x", ylab="coordinates y", type="p")

    pos <- which(adjacency>0, arr.ind = T)

    max = ncol(adjacency) * nrow(adjacency)

    for(i in 1:max){
        arrows(coordinates[pos[i,1],1], coordinates[pos[i,1],2], coordinates[pos[i,2],1], coordinates[pos[i,2],2], col="royalblue3", lwd=1)
    } 
}

plotGraph()

它似乎运行良好,但现在,使用预安装的图形包, 如何增加边,邻接越大?

提前感谢您的任何建议!

您需要使用lwd(参见函数lines的帮助)并将其设置为adjacency。您也不应该绘制从一个点到它自身的线(并避免警告)。以下是否可以满足您的需求:

coordinates <- matrix(rexp(50), 10)
adjacency <- matrix(c(0,1,0,0,2,0,1,0,0,2,1,0,1,0,0,1,0,2,0,1,0,1,2,0,1,1,1,0,1,0), nrow=nrow(coordinates), ncol=nrow(coordinates))

plot(coordinates, main="Network Visualisation", xlab="coordinates x", ylab="coordinates y", type="p")

pos <- which(adjacency>0, arr.ind = T)

for(i in 1:dim(pos)[1]){
    if(pos[i,1]!=pos[i,2]){
        arrows(coordinates[pos[i,1],1], coordinates[pos[i,1],2], 
               coordinates[pos[i,2],1], coordinates[pos[i,2],2], 
               col="royalblue3", lwd=adjacency[pos[i,]])
    }
}