gpt4 book ai didi

r - 在 R 中正确绘制大型邻接矩阵

转载 作者:行者123 更新时间:2023-12-03 21:32:12 25 4
gpt4 key购买 nike

我有一个相当大(但非常稀疏)的邻接矩阵(500x500),我试图用视觉表示。在我看来,类似于力有向图的东西是我最好的选择,在试图找出实现它的最佳方法时,我遇到了不止一种 R 资源。最有用的是 http://kateto.net/network-visualization 上的网络可视化虽然我以前从未使用过 R,但它似乎有许多对这种可视化有用的功能。

我设法在下面生成了一个图,但图像很小并且节点是堆叠的。

enter image description here

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

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

为方便起见,我在此处上传了引用到我的 GitHub 的两个文件 https://github.com/BStricklin/DataViz .

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 中执行此操作感兴趣。

最佳答案

您可以从简化网络可视化开始的一件事是删除未连接的顶点 - 度数低于 1 的顶点:

net3 <- delete.vertices(net2, degree(net2)<1)

然后你可以使用更适合大型网络的布局算法,例如 layout_with_graphopt ,一种力导向算法,它允许设置产生最终导致最终布局的力的“ Spring ”的初始长度:
net.graphopt <- layout_with_graphopt(net3, charge = 0.009, mass = 50, spring.length = E(net3)$weight) 

最终,您可以在更大的绘图区域(如上面第一个答案中所建议的)绘制网络,增加 pdf() 的高度和宽度。命令,如下:
pdf("graphopt.pdf", height = 14, width = 14)
plot.igraph(net3,vertex.size=2,vertex.label.cex=.5,layout=net.graphopt)
dev.off()

最后的结果还是有点乱,但至少避免了节点重叠太多:

Network plotted using igraph::layout_with_graphopt

关于r - 在 R 中正确绘制大型邻接矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41218330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com