如何仅使用预安装的图形包来增加网络虚拟化图中的边缘宽度?
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,]])
}
}
我编写了以下代码,它采用节点矩阵(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,]])
}
}