自定义范围热图

时间:2014-05-04 10:46:03

标签: r heatmap gplots

我正在使用" gplots"中的heatmap.2函数。包,并想调整vizual输出。

我想得到一个对称的配色方案,我已经使用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")

生成此情节

plot

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

1 个答案:

答案 0 :(得分:3)

使用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?