1

我想在 R 中使用 pheatmap 制作一个热图,颜色为绿色、黑色和红色,并使用图例中从 -2 到 2 的范围,这是我使用的代码:

library(pheatmap)
my_palette <- colorRampPalette(c("green", "black", "red"))(n = 201)
colors = c(seq(as.numeric(-2),-0.01,length=100), 0, 
seq(0.01,as.numeric(2),length=100))

pheatmap(mFilt_annot_sort_matrix, color = my_palette, breaks = colors, scale = 
"none", cluster_rows = F, cluster_cols = F, margin = c(5,5))

问题是我希望绿色小于-2的值和红色大于2的值,而我的解决方案这些值是白色的,你能帮我吗?

4

1 回答 1

1

您需要将断点设置为 -2 和 +2,并在两者之间进行渐变。您还需要将颜色设置为小于最小值和大于最大值所需的值。往下看;

library(pheatmap)

colors <- c(min(mFilt_annot_sort_matrix),seq(-2,2,by=0.01),max(mFilt_annot_sort_matrix))

my_palette <- c("green",colorRampPalette(colors = c("green", "black", "red"))
                                                   (n = length(colors)-3), "red")


pheatmap(mFilt_annot_sort_matrix, color = my_palette, breaks = colors, scale = 
"none", cluster_rows = F, cluster_cols = F, margin = c(5,5))

使用普通数据的示例;

使用rnorm.within函数我制作了以下数据集:

#V1 is random between -4 and 4 
#V2 is less than -2
#V3 is greater than 2

df <- data.frame(cbind(rnorm.within(1000, -4, 4)
,rnorm.within(1000,-4,-3), rnorm.within(1000,3,4))) 

并应用上述程序(相同的中断和颜色托盘)制作热图将得到:

pheatmap(df, color = my_palette, breaks = colors, scale = 
                  "none", cluster_rows = F, cluster_cols = F, margin = c(5,5))
   

于 2017-06-06T19:57:59.410 回答