在R中,是否有与heatmap()相似的函数来显示大矩阵中的组?

时间:2018-05-20 22:55:36

标签: r igraph

我目前在R中有一个1000 by 1000矩阵。矩阵中有100个组/社区,我希望以某种方式验证这100个组是否正在出现。例如,前10列/行定义一个组,第二列10列/行定义另一个组,依此类推。

有没有一种方法可以实现这样的分组?理想情况下,我会有一个热图,可以显示10 by 10的对角块。我尝试了heatmap功能,但似乎并没有这样做。

有人有任何想法吗?

1 个答案:

答案 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)

Heatmap01

这是做它应该做的事情,但试图把它做 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)

Heatmap02

很容易看到10个高度连接的10组,只是组之间的一些联系。

要查看具有如此大矩阵的任何内容,您需要放大。