【问题标题】:How to get color scale value (row z-score value) from R pheatmap如何从 R pheatmap 获取色阶值(行 z 分数值)
【发布时间】:2018-03-28 03:40:58
【问题描述】:

我有以下数据框:

library(pheatmap)
library(RColorBrewer)

dat <- structure(c(36.28516213, -9.184523335, 5.716034994, 32.82180488, 
-18.5467127, 22.79930301, -24.79075287, -49.23768715), .Dim = c(2L, 
4L), .Dimnames = list(c("motif_a", "motif_b"), c("cow", "dog", 
"snake", "cat")))

dat
#>               cow       dog     snake       cat
#> motif_a 36.285162  5.716035 -18.54671 -24.79075
#> motif_b -9.184523 32.821805  22.79930 -49.23769

并使用以下热图代码:

p <- pheatmap(
  dat,
  color = colorRampPalette(rev(RColorBrewer::brewer.pal(n = 7, name = "RdYlBu")))(1000),
  clustering_method = "ward.D2",
  border_color = "grey60",
  clustering_distance_columns = "correlation",
  clustering_distance_rows = "correlation",
  fontsize_row = 6,
  cluster_rows = TRUE,
  cluster_cols = TRUE,
  scale = "row"
)

我可以得到这个情节。

如图中所述,我怎样才能获得对应的值 热图中的每个点到右侧色阶。

例如,cow motif_b 的值为 -9.184523,但右侧 色标给出的值介于 0 到 -0.5 之间。我怎样才能得到这些值?

最终结果是一个数据帧,其中的值已转换。 我该怎么做?

【问题讨论】:

    标签: r heatmap pheatmap


    【解决方案1】:
    scale_rows = function(x){
        m = apply(x, 1, mean, na.rm = T)
        s = apply(x, 1, sd, na.rm = T)
        return((x - m) / s)
    }
    
    
    zscores <- scale_rows(dat)
    

    https://github.com/raivokolde/pheatmap/blob/44a44f7e640c73867f40261691c16dfa4da34fa8/R/pheatmap.r

    【讨论】:

      【解决方案2】:

      当您指定clustering_distance_xxx = "correlation" 时,您要求pheatmap 绘制介于-1 和1 之间的Pearson 相关性。运行?pheatmap 了解更多详情。

      如果你从代码中删除这些部分,那么你会得到你所期望的

      library(pheatmap)
      library(RColorBrewer)
      
      dat <- structure(c(36.28516213, -9.184523335, 5.716034994, 32.82180488, 
          -18.5467127, 22.79930301, -24.79075287, -49.23768715), .Dim = c(2L, 
          4L), .Dimnames = list(c("motif_a", "motif_b"), c("cow", "dog", 
          "snake", "cat")))
      
      myCol <- colorRampPalette(rev(RColorBrewer::brewer.pal(n = 7, name = "RdYlBu")))(8)
      
      p <- pheatmap(
        dat,
        color = myCol,
        clustering_method = "ward.D2",
        border_color = "grey60",
        clustering_distance_columns = "correlation",
        clustering_distance_rows = "correlation",
        fontsize_row = 6,
        cluster_rows = TRUE,
        cluster_cols = TRUE,
        scale = "row"
      )
      

      p1 <- pheatmap(
        dat,
        color = myCol,
        clustering_method = "ward.D2",
        border_color = "grey60"
      )
      

      reprex package (v0.2.0) 于 2018 年 3 月 27 日创建。

      【讨论】:

      • 这不是我想要的。我想要新的dat,其 z 分数值以右侧色标编码
      猜你喜欢
      • 1970-01-01
      • 2019-06-19
      • 2011-05-28
      • 1970-01-01
      • 2018-03-07
      • 2017-06-06
      • 2020-12-16
      • 2015-12-09
      • 2021-06-30
      相关资源
      最近更新 更多