【问题标题】:plotting with specific values for heatmap in pheatmap在 pheatmap 中使用热图的特定值进行绘图
【发布时间】:2019-05-29 17:55:35
【问题描述】:

我有一个这样的数据框:

gene    s1  s2  s3
1   -3.83   -8.17   -8.59
2   0.33    -4.51   -7.27
3   0.15    -5.26   -6.2
4   -0.08   -6.13   -5.95
5   -1.15   -4.82   -5.75
6   -0.99   -4.11   -4.85
7   0.42    -4.18   -4.54
8   -0.32   -3.43   -4.4
9   -0.72   -3.37   -4.39

我想使用 pheatmap 制作热图,如果任何低于 -4 的东西应该是绿色的,任何超过 +4 的东西都应该是红色的,并且介于两者之间的所有东西都应该是红色/绿色阴影。我也不想扩展我的数据并且没有聚类。到目前为止,我在 R 中有这段代码:

d <- read.table("test.txt", header = TRUE, sep = "\t", row.names = 1, quote = "")

pheatmap(as.matrix(d),  # matrix
         scale = "none",         # z score scaling applied to rows 
         cluster_cols=FALSE,    # do not cluster columns
         cluster_rows = FALSE,
         treeheight_row=0,      # do not show row dendrogram
         show_rownames=FALSE,   # do not show row names i.e gene names
         main = "test.txt",
         color = colorRampPalette(c("#0016DB","#FFFFFF","#FFFF00"))(50),
         )

我怎样才能用我上面提到的配色方案来绘制这个。

谢谢

【问题讨论】:

    标签: r plot heatmap pheatmap


    【解决方案1】:
    d <-read.table(text="gene      s1      s2      s3
                            1   -3.83   -8.17   -8.59
                            2    0.33   -4.51   -7.27
                            3    0.15   -5.26   -6.20  
                            4   -0.08   -6.13   -5.95
                            5   -1.15   -4.82   -5.75
                            6   -0.99   -4.11   -4.85
                            7   0.42    -4.18   -4.54
                            8   -0.32   -3.43   -4.40
                            9   -0.72   -3.37   -4.39", header=T)
    
    library(pheatmap)
    
    my_colors <- c(min(d),seq(-4,4,by=0.01),max(d))
    
    my_palette <- c("green",colorRampPalette(colors = c("green", "red"))
                    (n = length(my_colors)-2), "red")
    
    pheatmap(as.matrix(d),  
             scale = "none",         
             cluster_cols=FALSE,    
             cluster_rows = FALSE,
             treeheight_row=0,      
             show_rownames=FALSE,   
             main = "test.txt",
             color = my_palette,
             breaks = my_colors)
    

    reprex package (v0.3.0) 于 2019 年 5 月 29 日创建

    【讨论】:

    • 非常感谢,效果很好。 (n = length(my_colors)-2) 的一个问题是我想要多少种色调? 403-2=401。我可以为调色板添加这个吗? my_palette &lt;- c("blue",colorRampPalette(colors = c("blue","black", "yellow"))(n = length(my_colors)-3), "yellow")
    • @user3138373 对。取决于您想要阴影的精细程度,您可以将 seq(-4,4,by=0.01) 更改为例如seq(-4,4,by=0.1)。是的,你可以定义你的中间颜色。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 2015-12-09
    • 1970-01-01
    相关资源
    最近更新 更多