1

我正在使用“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")

生成此图

阴谋

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

4

1 回答 1

3

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

您可以使用breaks参数手动设置中断。在这种情况下,我认为您可以通过创建从 -3 到 3 的序列并设置为比您定义的颜色数量多 1 来实现您正在寻找的东西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?

于 2014-05-05T13:13:12.693 回答