【问题标题】:R heatmap colouring dependant on values being above or below zeroR 热图着色取决于高于或低于零的值
【发布时间】:2012-01-03 07:40:58
【问题描述】:

我正在尝试在 R 中制作热图,其中我的数据范围从 -5 到 +50。我希望 0 的值为白色,0 到 -5 之间的值在从白色到蓝色的渐变上着色,0 到 +50 之间的值从白色到红色着色。理想情况下,我还希望使用相同的缩放比例,即 -5 处的蓝色暗度与 +5 处的红色暗度相同。

我有热图的工作代码,整个数据集的渐变从蓝色到红色,白色着色点接近数据的平均值。

hv <- heatmap.2(data_matrix,
    scale="none",
    Rowv=NA, 
    Colv=NA, 
    col = rev(brewer.pal(11,"RdBu")), 
    margins=c(5,5), 
    cexRow=0.5, cexCol=1.0,
    ylab= "Mutations",
    main = "heatmap", 
    key=TRUE,keysize=1.5, trace="none")

任何建议将不胜感激。

干杯!

【问题讨论】:

  • 你有没有看过这个最近非常相似的问题:stackoverflow.com/questions/8161014/custom-heat-map-in-r/…
  • 您的意思是希望“-5 处的蓝色暗度与 +50 处的红色暗度 相同”?最后,您能否包含一个名为 data_matrix 的小型子矩阵(以及对 1ibrary(RColorBrewer)library(gplots) 的调用),以使其成为可重现的示例?

标签: r scaling heatmap


【解决方案1】:

如果您的数据从 -5 变为 +50,则正值和负值具有相同的渐变将使负值看起来几乎全白,

相比之下,完整的hue版本是这样的,

【讨论】:

  • 你是如何创造这个巴蒂斯特的?下一个是我正在寻找的示例。
  • @Torvon 我写了some custom grid functions,但不幸的是一直没有时间整理。
  • 您能否在答案中添加代码(以添加彩色刻度)?
  • 我使用了上面链接中的colorbarGrob
【解决方案2】:

您需要将这些添加到您的函数中。

休息 = c(5/6* -5,5/6* -4,5/6* -3,5/6* -2,5/6* -1,0,5/6* 1, 50/6*1,50/6*2,50/6*3,50/6*4,50/6*5)

休息=休息

这指定了您在热图中使用的中断。 您可以尝试稍微捏造一下数字,并添加更多颜色和中断,中断的数量应该是颜色数 + 1。

给出这个:

library(RColorBrewer) 
library(gplots)
data_matrix <- cbind(c(rnorm(30,-2.5,sd= 0.85),rnorm(30,25,sd= 8),rnorm(30,6,sd= 3)),
            c(rnorm(30,-2.5,sd= 0.85),rnorm(30,25,sd= 8),rnorm(30,6,sd= 3)),
            c(rnorm(30,-2.5,sd= 0.85),rnorm(30,25,sd= 8),rnorm(30,6,sd= 3)),
            c(rnorm(30,-2.5,sd= 0.85),rnorm(30,25,sd= 8),rnorm(30,6,sd= 3)))

breaks = c(5/6* -5, 5/6* -4, 5/6* -3, 5/6* -2, 5/6* -1, 0 ,5/6* 1, 50/6*1, 50/6*2, 50/6*3, 50/6*4, 50/6*5)
hv <- heatmap.2(data_matrix, 
    scale="none",
    Rowv=NA,
    Colv=NA,
    col = rev(brewer.pal(11,"RdBu")),
    margins=c(5,5),
    cexRow=0.5, cexCol=1.0, 
    breaks=breaks,
    ylab= "Mutations",
    main = "heatmap",
    key=TRUE,keysize=1.5, trace="none")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    相关资源
    最近更新 更多