0

私はいじってpheatmap、最初から立ち往生しようとしています。

おもちゃの例を作成する:

library(pheatmap)
set.seed(1)
my.mat <- matrix(rnorm(90), nrow = 30, ncol = 30)
rownames(my.mat) <- 1:30
colnames(my.mat) <- 1:30
col.scale = colorRampPalette(c("red", "blue"), space = "rgb")(10)
breaks.size = 11
pheatmap(my.mat, color = col.scale, breaks = breaks.size, border_color = NA, cellwidth = 10, cellheight = 10)

次のエラー メッセージがスローされます。

Error in unit(y, default.units) : 'x' and 'units' must have length > 0

そして、それが生成するプロットは正しくないようです:

たとえば、右上のセルが白い理由がわかりません。また、長方形ではなく正方形のセルを取得するという設定cellwidth = 10と意味も考えました 。cellheight = 10最後に、ヒート マップのデンドグラムと同じ側 (つまり、デンドグラムの先端) に行名と列名を表示できるかどうかを誰かが知っていれば、それは素晴らしいことです。 ここに画像の説明を入力

4

1 に答える 1

2

そのエラーが発生する理由は、breaks=パラメーターを正しく使用していないためです。?pheatmapヘルプページより

break : mat の値の範囲をカバーし、カラー ベクトルより 1 要素長い数値のシーケンス。値を色にマッピングするために使用されます。特定の値を特定の色や特定の値にマッピングする必要がある場合に便利です。値が NA の場合、休憩は自動的に計算されます。

他の関数のように単一の値を渡すことはできません。

また、セルが正方形ではないことについてあなたが何を言っているのかわかりません。あなたは30x30の正方形をプロットしています(少なくとも私にとってはそうです)。クラスタリングしているため、クラスタごとに 1 つの色しか得られません。

問題の一部は、900 個のセル マトリックスに対して 90 個のランダム変数しか生成していないため、それらの値が繰り返されている可能性があると推測しています (データは非常に構造化されています)。おそらくあなたが意味した

my.mat <- matrix(rnorm(900), nrow = 30, ncol = 30)

そうすることで、次のプロットが得られます

ここに画像の説明を入力

于 2014-07-18T21:04:10.287 に答える