我有一个相当大(但非常稀疏)的邻接矩阵(500x500),我试图在视觉上表示。在我看来,类似于力有向图的东西是我最好的选择,在试图找出实现这一点的最佳方法时,我遇到了不止一个 R 资源。最有帮助的是http:/上的网络可视化/kateto.net/network-visualization虽然我以前从未使用过 R,但它似乎为这种可视化提供了许多有用的功能。
我设法在下面生成了一个图,但图像相当小并且节点是堆叠的。
如果我打印到 pdf 而不是 PNG,分辨率会稍微好一些,但我仍然有堆叠问题。因此,我的问题是,我将如何在 R 中正确绘制一个大的邻接矩阵来解决这些问题。
到目前为止,我的代码如下(最后几行我尝试了几种不同的方式来绘制我的数据)。非常感谢任何提示。先感谢您。
为方便起见,我在https://github.com/BStricklin/DataViz上传了引用到我的 GitHub 的两个文件。
plot.new()
library('igraph')
setwd("D:/Downloads/polnet2016/Data files")
nodes2 <- read.csv("nodes.csv", header=T, as.is=T)
links2 <- read.csv("nodeAdjacency.csv", header=T, row.names=1)
links2 <- as.matrix(links2)
head(nodes2)
head(links2)
net2 <- graph_from_incidence_matrix(links2)
net2 <- graph_from_adjacency_matrix(links2, mode = "undirected", weighted = TRUE)
net2 <- simplify(net2, remove.multiple = F, remove.loops = T)
V(net2)$label <- nodes2$id
deg <- degree(net2, mode="all")
V(net2)$size <- deg*3
#plot(net2)
#plot(net2, edge.label=round(E(net2)$weight, 3))
layout <- layout.reingold.tilford(net2)
#plot.igraph(net2,vertex.size=3,layout=layout.lgl)
plot.igraph(net2,vertex.size=3,vertex.label.cex=.5,layout=layout.fruchterman.reingold(net2, niter=10000))
编辑:对于任何想知道我最终是如何做到这一点的人,我必须使用 MATLAB 并使用图形和绘图函数。它看起来和 R 图像一样糟糕,但是通过对节点的一些自定义和缩放功能的使用,它运行得很好。不过,我仍然会对如何在 R 中做到这一点感兴趣。