サイズが n*k の R でヒートマップを作成しました。i 番目の要素に使用される個々の色を抽出することは可能ですか?
たとえば、n=3 (列) および k=50 (行) の場合、n は任意の重大度レベルであり、k は英国の地区を表します。
これらの地区のポリゴンがあり、一貫性を保つために、ヒートマップ全体と同じ色をポリゴンの塗りつぶしとして使用して、重大度に基づいて 3 つの個別のマップを作成したいと考えています。
ありがとう、アラン
これがどのように機能するかを理解するには、 のコードを調べる必要がありましたpheatmap
。最初に行列を生成しましょう。
A <- matrix(1:10, 2, 5)
デフォルトのパレットは次のように定義されています
pal <- colorRampPalette(rev(RColorBrewer::brewer.pal(n = 7, name = "RdYlBu")))(100)
次に、ブレーク値を定義し、ブレークによって定義された各間隔に色を割り当てます。
bks <- pheatmap:::generate_breaks(A, length(pal), center = F)
A2 <- pheatmap:::scale_colours(A, col=pal, breaks=bks)
MatrixA2
には、 の各セルに関連付けられた色が含まれますA
。
A2
# [,1] [,2] [,3] [,4] [,5]
# [1,] "#4575B4" "#ABD0E4" "#F4FBD2" "#FEDF8F" "#EF6D48"
# [2,] "#77A6CE" "#E0F3F7" "#FEF4AF" "#FCA86B" "#D73027"
最後に、最初に でA
定義された色で、さらにで表すことができます。A2
pheatmap
image
pheatmap(t(A[,5:1]),cluster_rows = F, cluster_cols = F)
image(A, col=A2)