2

次の例では、3 つの列と 5 つの行の行列です。ヒートマップを作成すると、以下の例 (0.3,0.3,0.3) のような同様の数値を持つ行は、ヒートマップに白色で表示されます。私の意図は、それを望ましい色に変更することです。例: 以下に例を示します。

    A = matrix(c(0.0183207, 0.0000000, 0.1468750, 0.03, 0.03, 0.03,0.4544720,0.0000000,0.1395850,0.002,0,0,1.1,1,1),nrow=5,ncol=3,byrow = TRUE) 
dimnames(A) = list(c("row1", "row2","row3","row4","row5"),c("col1", "col2", "col3"))
heatmap.2( A,col =redgreen, scale = "row", cexRow=0.3, cexCol=0.8, margins=c(6,6), trace="none")

この例では、行データ (0.3,0.3,0.3) に由来する行が白色であることがわかります。

助けてくれてありがとう

4

2 に答える 2

4

ヒートマップ コマンドはヒートマップを描画する前に行をスケーリングするため、色は白です。したがって、行 c(0.3, 0.3, 0.3) はゼロの行になり、ゼロはこの配色では白で示されます。

これらの行に他の配色が必要な場合は、本当に行をスケーリングするか、引数breakscol引数を使用して値 0 の別の色を作成するかを検討する必要があります。

于 2013-10-29T08:18:51.637 に答える
2

定数ベクトルをスケーリングするとどうなりますか? R に 0 で除算するように指示しているため、 が得られますNaN

scale(c(0.3, 0.3, 0.3))

これは、行ごとにスケーリングするように指示したときに起こっていることですheatmap.2が、行の 1 つにバリエーションがありません。は数値ではないためNaN、白でプロットされます。代わりに黒くしたい場合は、事前にデータを手動でスケーリングし、NaNを 0 に置き換える必要があると思います。

scaled_A <- t(apply(A, MARGIN=1, FUN=scale))
scaled_A[is.nan(scaled_A)] <- 0

次に、ヒートマップ呼び出しを行うことができます

heatmap.2( scaled_A,col =redgreen,
           scale = "none",
           cexRow=0.3, cexCol=0.8,
           margins=c(6,6), trace="none",
           dendrogram='none')

しかも黒です。そのまま順番が入れ替わっているように見えますが、おそらくそれを修正する方法を理解できるでしょう。

于 2013-10-29T19:22:30.873 に答える