Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中大邻接矩阵的正确绘制_R_Igraph_Adjacency Matrix_Adjacency List Model - Fatal编程技术网

R中大邻接矩阵的正确绘制

R中大邻接矩阵的正确绘制,r,igraph,adjacency-matrix,adjacency-list-model,R,Igraph,Adjacency Matrix,Adjacency List Model,我有一个相当大(但相当稀疏)的邻接矩阵(500x500),我试图直观地表示它。在我看来,类似于力定向图的东西是我最好的选择,在试图找出实现这一点的最佳方法时,我遇到了不止一种R资源。最有用的是网络可视化。尽管我以前从未使用过R,但它似乎有许多有助于这种可视化的功能 我已经成功地在下面绘制了一幅图,但是图像非常小,节点被堆叠起来 如果我打印成pdf而不是PNG,分辨率会稍微好一点,但仍然存在堆叠问题。因此,我的问题是,如何正确地在R中绘制一个大的邻接矩阵来解决这些问题 到目前为止,我的代码如下(

我有一个相当大(但相当稀疏)的邻接矩阵(500x500),我试图直观地表示它。在我看来,类似于力定向图的东西是我最好的选择,在试图找出实现这一点的最佳方法时,我遇到了不止一种R资源。最有用的是网络可视化。尽管我以前从未使用过R,但它似乎有许多有助于这种可视化的功能

我已经成功地在下面绘制了一幅图,但是图像非常小,节点被堆叠起来

如果我打印成pdf而不是PNG,分辨率会稍微好一点,但仍然存在堆叠问题。因此,我的问题是,如何正确地在R中绘制一个大的邻接矩阵来解决这些问题

到目前为止,我的代码如下(最后几行是我尝试绘制数据的几种不同方式)。任何提示都非常感谢。先谢谢你

为了方便起见,我在这里上传了引用到GitHub的两个文件

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()