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

问题描述 投票:10回答:2

我已经得到了我想要直观地表示一个相当大的(但相当稀疏)邻接矩阵(500×500)。在我看来,是一个类似于力向图是我最好的选择,虽然试图找出实现这一目标的最佳方式,我在一个以上的资源来抓R.最有用的是网络的可视化上http://kateto.net/network-visualization虽然我以前从来没有使用R,它似乎有许多有用的功能,这还挺可视化。

我设法生产出以下的阴谋,但图像是相当小的,节点堆叠。

enter image description here

该决议是稍微好一点,如果我打印到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中虽然。

r igraph adjacency-matrix adjacency-list-model
2个回答
0
投票

尝试使该地块面积:

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

0
投票

如果你的目标是坚持表示作为一个网络,就必须优化图形布局算法的布局参数,你的情况Fruchterman-Reingold的那些,以获得一个漂亮的布局。

另一种解决方案将是使用另一种表示为纯矩阵,请参阅“Adjacency matrix plots with R and ggplot2”。

最后但并非最不重要的,你可以挑选出的最大组成部分,并分别绘制一个。这就是我通常采取的方式。

© www.soinside.com 2019 - 2024. All rights reserved.