R中大邻接矩阵的正确绘制
我有一个相当大(但相当稀疏)的邻接矩阵(500x500),我试图直观地表示它。在我看来,类似于力定向图的东西是我最好的选择,在试图找出实现这一点的最佳方法时,我遇到了不止一种R资源。最有用的是网络可视化。尽管我以前从未使用过R,但它似乎有许多有助于这种可视化的功能 我已经成功地在下面绘制了一幅图,但是图像非常小,节点被堆叠起来 如果我打印成pdf而不是PNG,分辨率会稍微好一点,但仍然存在堆叠问题。因此,我的问题是,如何正确地在R中绘制一个大的邻接矩阵来解决这些问题 到目前为止,我的代码如下(最后几行是我尝试绘制数据的几种不同方式)。任何提示都非常感谢。先谢谢你 为了方便起见,我在这里上传了引用到GitHub的两个文件R中大邻接矩阵的正确绘制,r,igraph,adjacency-matrix,adjacency-list-model,R,Igraph,Adjacency Matrix,Adjacency List Model,我有一个相当大(但相当稀疏)的邻接矩阵(500x500),我试图直观地表示它。在我看来,类似于力定向图的东西是我最好的选择,在试图找出实现这一点的最佳方法时,我遇到了不止一种R资源。最有用的是网络可视化。尽管我以前从未使用过R,但它似乎有许多有助于这种可视化的功能 我已经成功地在下面绘制了一幅图,但是图像非常小,节点被堆叠起来 如果我打印成pdf而不是PNG,分辨率会稍微好一点,但仍然存在堆叠问题。因此,我的问题是,如何正确地在R中绘制一个大的邻接矩阵来解决这些问题 到目前为止,我的代码如下(
plot.new()
库('igraph')
setwd(“D:/Downloads/polnet2016/Data files”)
节点2尝试增大绘图区域:
png("network_name.png", width = 15, height = 15, units = "in", res = 300)
plot.igraph(net2,vertex.size=3,
vertex.label.cex=.5,
layout=layout.fruchterman.reingold(net2, niter=10000))
dev.off()
如果您打算坚持使用网络表示法,则必须优化图形布局算法的布局参数,在您的情况下是的,以获得漂亮的布局
另一种解决方案是使用另一种表示形式作为普通矩阵,请参见“”
最后但并非最不重要的一点是,您可以选择最大的组件并分别绘制该组件。这是我通常采用的方法。要简化网络的可视化,首先可以删除未连接的顶点,即阶数小于1的顶点:
net3 <- delete.vertices(net2, degree(net2)<1)
最终,您可以在更大的绘图区域中绘制网络(如第一个答案中所建议的),增加pdf()
命令的高度和宽度,如下所示:
pdf("graphopt.pdf", height = 14, width = 14)
plot.igraph(net3,vertex.size=2,vertex.label.cex=.5,layout=net.graphopt)
dev.off()
最终的结果仍然有点混乱,但至少它避免了过多的节点重叠:
如果你在我的github页面上看到的是矩阵与图形的对比图,你是正确的@user20650,链接是@Zboson,那么可以说nodeadjacenty.csv文件就是图形。不同之处在于矩阵是加权的,因此矩阵的数字代表连接的强度,而不是像链接到的页面上那样简单地填充框。一个选项是使用statnet
包,并在gplot
函数中设置displayisolates=FALSE
。如果你坚持使用<代码> Trime< /Cord>,可以设置一个阈值来绘制比常量大的边。例如,我会考虑使用一个交互式图形。这些通常比派生有用信息的静态图形wrt更有用
net.graphopt <- layout_with_graphopt(net3, charge = 0.009, mass = 50, spring.length = E(net3)$weight)
pdf("graphopt.pdf", height = 14, width = 14)
plot.igraph(net3,vertex.size=2,vertex.label.cex=.5,layout=net.graphopt)
dev.off()