我正在使用" 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")
生成此情节
我想解决的另一件事是删除颜色键的标题,并能够手动指定颜色键的轴标签。感谢
答案 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?