0

-6 から 6 の範囲の値を持つ gplots heatmap.2 のテーブルがあります。彩度を -2 から 2 に設定する方法はありますか? たとえば、-2 未満の数値は -2 として、2 を超える数値はそれぞれ 2 として扱います。前もって感謝します。

heatmap.2(eset, col = greenred(100), scale="none", key=TRUE, symkey=FALSE, density.info="none", trace="none", cexRow=0.9, cexCol=0.9)

サンプルデータ:

ID  Class   X1373   X1374   X1375   X1376   X1377   X1378   X1379   X1380   X1381   X1382   X1383   X1384   X1385
A1  LC  -1.33   -3.56   -1.61   -0.71   -4.44   -0.76   2.36    0.64    1.2 0.32    0.02    2.97    0.98
A2  LC  -0.71   0.59    -1.13   -0.62   -2.69   0.02    -0.14   0.16    1.04    0.12    0.11    0.02    1
A3  LC  -1.45   -4.07   -1.09   -1.7    -4.61   0.84    1.62    2.81    0.17    4   0.05    1.6 1.18
A4  LC  -0.11   -2.63   -0.26   -1.42   -1.61   4.38    0.03    1.09    0.75    0.39    4.64    6.03    -1.39
A5  LC  -0.78   -1.78   -0.86   -4.58   -5.96   -0.25   -1.31   -0.85   2.39    0.27    0.13    -0.63   2.28
A6  LC  -0.94   1.5 -1.59   -2.95   -3.42   0.06    1.46    1.07    0.76    0.46    0.79    2.03    1.57
A7  LC  -0.08   0.06    -0.39   0.21    -0.65   -0.38   1.12    0.64    1.19    2.86    0.53    -0.29   0.38
A8  LC  -1.55   -1.45   -1.25   -1.53   -2.41   1.86    2.59    2.75    0.77    2.37    2.08    3.3 -0.21
A9  LC  -0.47   -1.21   0.03    0.1 -0.02   -0.16   0.86    1.09    0.56    0   0.12    4.25    0.36
A10 LC  -1.18   0.92    -1.45   -0.83   -1.87   0.94    1.95    2.62    0.87    4.42    2.05    2.14    1.94
A11 LC  -0.6    -0.55   -0.15   0.08    -1.47   -0.42   0.16    -0.17   0.33    0.3 -0.07   0.24    -0.41
A12 LC  0.04    4.27    -0.9    -0.72   -0.23   0.58    -0.53   0.52    0.37    0.76    0   1.41    1.69
A13 LC  -0.13   1.34    0.35    -1.28   -0.23   -0.03   0.06    2.25    0.99    1.72    0.17    0.96    0.33
A14 LC  -1.2    -5.23   -0.29   -0.69   -1.61   1.6 2.74    2.59    1.57    0.19    3.75    4.51    0.63
A15 LC  -0.78   -1.36   -0.72   -2.52   -4.31   -0.25   -0.06   -0.36   1.44    0.27    0   2.31    2.15
A16 NC  -0.45   -1.18   0.24    -0.27   -0.47   0.68    0.86    1.05    0.49    1.55    0.02    -0.16   0.11
A17 NC  -0.07   0.91    0.07    -0.29   -0.08   -0.87   -1.33   0.15    -0.03   0   0.11    0.87    0.04
A18 NC  -0.4    1.16    -0.17   -0.62   -0.22   -0.12   0.62    0.38    0.15    0   -0.07   -0.21   0.66
A19 NC  -1.02   0.14    -0.03   -0.06   -0.86   -0.04   -0.37   0.46    0.09    0.27    0.02    0.5 -0.97
A20 NC  0.24    2.33    -0.19   -0.06   0.44    -0.26   -1.21   0.51    -0.09   -0.08   0   0.04    -0.51
A21 NC  -0.11   2.2 -0.3    0.7 -0.15   0.47    -0.22   1.24    0.53    2.63    0.2 -0.6    -0.18
A22 NC  0.03    -0.55   -0.37   -0.07   -0.04   0.54    -0.8    0.04    -0.19   -0.01   0.1 -0.1    -0.43
A23 NC  -0.25   -0.67   -0.11   0.05    -0.32   -0.3    0.72    0.14    0.49    -0.03   0   -0.11   0.06
A24 NC  -0.67   0.93    -1.6    -1.2    -0.81   -0.03   -1.71   -0.24   -0.12   1.32    -0.01   -0.13   -0.48
A25 NC  0.15    0.07    -0.04   0.04    -0.22   -0.54   -0.05   0.05    -0.52   -0.05   -0.2    -0.46   -0.25
A26 NC  0.69    -0.37   -0.42   -0.35   0.1 -0.03   -0.28   -0.19   0.04    0   -0.27   0.4 0.52
A27 NC  -0.45   1.27    -0.33   -0.04   0.1 1.08    -0.01   0.62    -0.13   0.48    0.39    0.18    0.19
A28 NC  0.07    -0.98   0.07    -0.31   0.04    0.43    -0.14   -0.16   -0.25   -0.01   -0.02   0.18    -0.14
4

1 に答える 1

4

ドキュメントによると、 (ヒートマップを描画する)zlim=c(-2, 2)への基になる呼び出しに渡される引数を提供できるはずです。image()残念ながら、私はまだこれを実際に機能させていません。

私が思いついた回避策は、次の関数を作成することです。

zlim = function(x, lim) { 
  x[which(x < min(lim))] = min(lim)
  x[which(x > max(lim))] = max(lim)
  return(x)
}

次に、渡すマトリックスをラップしますheatmap.2()

heatmap.2(zlim(X, c(-2,2)), ... )

次の警告に注意してください: この方法で表示制限を設定すると、 内のデフォルトの階層クラスタリングの結果に影響しますheatmap.2()hclust()事前にandを使用してクラスタリング デンドログラムを生成し、必要に応じてand引数as.dendrogram()を使用してそれらを渡す必要があります。Rowv=...Colv=...

アップデート

もう少し検索したところ、次の投稿を見つけました。

R: heatmap.2 カラーキーの変更

引数を使用しbreaks=...ます。必要な範囲を実現するには、呼び出しに を追加breaks=seq(-2,2,length.out=101)しますheatmap.2()。ブレークに提供されるベクトルは、色のベクトルが使用するよりも 1 要素長くする必要があります。を使用しているため、長さ 101 のベクトルである必要がありますcol=greenred(100)breaks=...

于 2012-10-02T18:56:45.503 に答える