16

1000*1000 のマトリックス (整数の 0 と 1 のみを含む) がありますが、ヒートマップを作成しようとすると、大きすぎてエラーが発生します。

このような大規模なマトリックスを使用してヒートマップを作成するにはどうすればよいですか?

4

6 に答える 6

17

heatmap余分な時間とメモリを必要とする多くの凝った処理を行うため、少なくともヒートマップには長い時間がかかると考えられます。dat@ bill_080 の例からの使用:

## basic command: 66 seconds
t0 <- system.time(heatmap(dat))
## don't reorder rows & columns: 43 seconds
t1 <- system.time(heatmap(dat,Rowv=NA))
## remove most fancy stuff (from ?heatmap): 14 seconds
t2 <- system.time( heatmap(dat, Rowv = NA, Colv = NA, scale="column",
             main = "heatmap(*, NA, NA) ~= image(t(x))"))
## image only: 13 seconds
t3  <- system.time(image(dat))
## image using raster capability in R 2.13.0: 1.2 seconds
t4 <- system.time(image(dat,useRaster=TRUE))

ヒートマップから本当に欲しいものを検討したい場合があります。つまり、派手な樹状図/並べ替えが必要ですか?

于 2011-04-14T18:57:07.847 に答える
11

このSOの質問には、Rメモリ管理に関するアドバイスがあります。1000 x 1000の画像を割り当てることができない場合は、携帯電話で統計情報を取得するのをやめる必要があります。

于 2011-04-14T17:34:31.737 に答える
10

試してみるとエラーはありません。コードは次のとおりです。

 library(lattice)

 #Build the data
 nrowcol <- 1000
 dat <- matrix(ifelse(runif(nrowcol*nrowcol) > 0.5, 1, 0), nrow=nrowcol)

 #Build the palette and plot it
 pal <- colorRampPalette(c("red", "yellow"), space = "rgb")
 levelplot(dat, main="1000 X 1000 Levelplot", xlab="", ylab="", col.regions=pal(4), cuts=3, at=seq(0,1,0.5))

ここに画像の説明を入力

于 2011-04-14T18:35:45.090 に答える
7

ラスターパッケージを試してみると、巨大なラスターファイルを扱うことができます。

于 2011-04-14T18:38:02.007 に答える
4

を使用すると、デフォルトの関数heatmap3よりもメモリ効率が高く、パッケージを使用して階層的クラスタリングを実行することで高速になります。引数を追加することも役立ちます:heatmapfastclusteruseRaster=TRUE

library(heatmap3)
nrowcol <- 1000
dat <- matrix(ifelse(runif(nrowcol*nrowcol) > 0.5, 1, 0), nrow=nrowcol)
heatmap3(dat,useRaster=TRUE)

ここに画像の説明を入力

メモリ使用量を制限内に保つことはuseRaster=TRUE非常に重要なようです。で同じ引数を使用できますheatmap.2。階層的クラスタリングの距離行列の計算は、計算の主なオーバーヘッドですが、大きな行列にheatmap3はより効率的なfastclusterパッケージを使用します。非常に大きな行列を使用すると、距離ベースの階層クラスターを実行しようとしても、問題が発生することは避けられません。その場合でも、引数Rowv=NAを使用Colv=NAして行と列のデンドログラムを抑制し、他のロジックを使用して行と列を並べ替えることができます。

nrowcol <- 5000
dat <- matrix(ifelse(runif(nrowcol*nrowcol) > 0.5, 1, 0), nrow=nrowcol)
heatmap3(dat,useRaster=TRUE,Rowv=NA,Colv=NA)

8 Gb メモリを搭載した私のラップトップでも問題なく動作しますが、デンドログラムが含まれていると、すでにクランチし始めています。

于 2015-08-20T12:18:12.167 に答える