我目前在R中有一个1000 by 1000
矩阵。矩阵中有100个组/社区,我希望以某种方式验证这100个组是否正在出现。例如,前10列/行定义一个组,第二列10列/行定义另一个组,依此类推。
有没有一种方法可以实现这样的分组?理想情况下,我会有一个热图,可以显示10 by 10
的对角块。我尝试了heatmap
功能,但似乎并没有这样做。
有人有任何想法吗?
答案 0 :(得分:4)
我不确定你为什么说heatmap
"似乎没有这样做"。它似乎对我有用。我假设你的矩阵是一个邻接矩阵。我提供了一个非常简单的示例,其中有100个高度连接的10个节点组,但组之间的连接很少。
示例数据
## First generate the graph
set.seed(1234)
GX = erdos.renyi.game(10,0.8)
for(i in 1:99) {
GX = GX + erdos.renyi.game(10,0.8) }
for(i in 0:99) {
rv = sample(10,2)
GX = add.edges(GX, c(i*10+rv[1], ((i+1)*10+rv[2]) %% 1000)) }
## Now we need the adjacency matrix
AM = as.matrix(as_adjacency_matrix(GX))
我将以两种方式绘制这个矩阵。首先,只是绘制它。
heatmap(AM, Rowv=NA, Colv=NA, col=terrain.colors(16),
labRow=FALSE, labCol=FALSE, revC=TRUE)
这是做它应该做的事情,但试图把它做 1000 x 1000图像到2000 x 1000计算机屏幕上无法到来 非常好。虽然这些群体在对角线下方, 很难看到这么大的东西。相反,让我们来吧 只查看左上角100 x 100部分(前10组) 增加尺寸。
heatmap(AM[1:100, 1:100], Rowv=NA, Colv=NA, col=terrain.colors(16),
labRow=FALSE, labCol=FALSE, revC=TRUE)
很容易看到10个高度连接的10组,只是组之间的一些联系。
要查看具有如此大矩阵的任何内容,您需要放大。