我正在尝试在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")
任何建议都将不胜感激。
干杯!
答案 0 :(得分:2)
您需要将这些添加到您的功能中。
break = 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")
答案 1 :(得分:2)
如果您的数据从-5到+50,正负值的渐变将使负色看起来几乎全白,
相比之下,完整的色调版本就是这样,