6

まあ言ってみれば:

m1<-matrix(rnorm(1000),ncol=100)

色の定義:

cols = colorRampPalette(c("white", "red"))(30)

私は pheatmap 関数でクラスタリングせずにヒートマップを作成しています:

pheatmap(dist(t(m1)), cluster_rows = F, cluster_cols = F, show_rownames = TRUE, 
color = cols, main = 'Heatmap')

問題は、同じヒートマップを取得するために色を定義する方法ですが、特定の値のピクセル (たとえば、0.1 未満) のみを使用して色を定義する方法です。

セットしてみた

cols = ifelse(dist(t(m1))<0.1,'red','black')

しかし、うまくいきませんでした。

4

2 に答える 2

12

シンプルなバイナリ カラー スキームの場合は、次のbreaks引数を使用できます。

library(pheatmap)

set.seed(1)
m1<-matrix(c(rnorm(1000)), ncol=100)

pheatmap(dist(t(m1)),
         cluster_rows = F,
         cluster_cols = F,
         show_rownames = TRUE, 
         color = c("red", "black"),
         breaks = c(0, 3, 9),  # distances 0 to 3 are red, 3 to 9 black
         main = 'Heatmap')

次のようになります。

ここに画像の説明を入力

色のグラデーションを好む場合は、次のように行うことができます。

m <- matrix(c(rnorm(1000)), ncol=100)
distmat <- dist(t(m))

# Returns a vector of 'num.colors.in.palette'+1 colors. The first 'cutoff.fraction'
# fraction of the palette interpolates between colors[1] and colors[2], the remainder
# between colors[3] and colors[4]. 'num.colors.in.palette' must be sufficiently large
# to get smooth color gradients.
makeColorRampPalette <- function(colors, cutoff.fraction, num.colors.in.palette)
{
  stopifnot(length(colors) == 4)
  ramp1 <- colorRampPalette(colors[1:2])(num.colors.in.palette * cutoff.fraction)
  ramp2 <- colorRampPalette(colors[3:4])(num.colors.in.palette * (1 - cutoff.fraction))
  return(c(ramp1, ramp2))
}

cutoff.distance <- 3  
cols <- makeColorRampPalette(c("white", "red",    # distances 0 to 3 colored from white to red
                               "green", "black"), # distances 3 to max(distmat) colored from green to black
                             cutoff.distance / max(distmat),
                             100)

pheatmap(distmat,
         cluster_rows = F,
         cluster_cols = F,
         show_rownames = TRUE, 
         color = cols,
         main = 'Heatmap')

次に、次のようになります。

ここに画像の説明を入力

于 2015-09-13T03:29:54.110 に答える