【问题标题】:Customize range heatmap.2自定义范围 heatmap.2
【发布时间】:2014-06-20 17:45:36
【问题描述】:

我正在使用“gplots”包中的 heatmap.2 函数,并希望调整可视化输出。

我想获得一个对称的配色方案,我已经使用 scale="row" 选项实现了这一点。但是,这样做时,我的范围会缩小到一个小区间 c(-1, 1)。我的数据范围是 c(-1.2 , 2.97),我希望配色方案能够捕获我的数据的完整分辨率。我可以指定颜色范围吗? c(-3,3) 或者还有其他方法可以让我的数据获得更高的分辨率

这是我的代码

>head(hmdat[select,])
          Ind_B    Ind_Z     Ind_P
SVS1 -0.2176648 1.540470 -0.03700749
RHR2  0.3814377 1.425968  0.45827347
ADR1  0.7410964 1.062387  1.37050918
SPI1  0.2722683 1.324529  0.72636276
YAR1  0.7309389 1.278198  0.98776034
DDR2 -0.1727803 2.470086  0.74259052

>hmcol = colorRampPalette(brewer.pal(9, "RdBu"))(100)
>heatmap.2(hmdat[select,],scale="row", col = hmcol, trace="none", margin=c(7, 5),cexCol=0.9,cexRow=0.5,density.info="density")

生成此图

我想修复的另一件事是删除颜色键的标题并能够手动指定颜色键的轴标签。谢谢

【问题讨论】:

  • 对我来说,听起来你不想逐行缩放。也许尝试scale = "none" 并手动设置breaks 类似breaks = seq(-3, 3, length.out = 101)
  • 你是绝对正确的。使用休息就可以了。谢谢
  • 好的,我已将其添加为答案,因此此问题不会保留在“未回答”列表中。

标签: r heatmap gplots


【解决方案1】:

使用scale = "row" 将按行缩放您的数据,并且不会保留您的原始原始值,因此如果您想保留这些值,您应该使用scale = "none"

您可以使用breaks 参数手动设置中断。在这种情况下,我认为您可以通过创建从 -3 到 3 的序列并将 length.out 设置为比您定义的颜色数量多一(需要多 1 个中断)来实现您正在寻找的东西比颜色):

heatmap.2(hmdat[select,],scale="none", col = hmcol, trace="none", margin=c(7, 5),cexCol=0.9,cexRow=0.5,density.info="density",breaks = seq(-3, 3, length.out = 101))

您可能会收到有关某些值没有数据的警告,并且您可能需要添加 symbreaks = TRUE 以获得您正在寻找的对称效果。

我不认为有一个简单的选项可以改变颜色键的标签,但你可以试试这个问题的解决方案:How to change the color key value in heatmap.2?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 2013-07-23
    • 2010-12-03
    • 2018-06-10
    • 1970-01-01
    • 2015-07-07
    相关资源
    最近更新 更多