gpt4 book ai didi

R 热图着色取决于高于或低于零的值

转载 作者:行者123 更新时间:2023-12-04 10:27:48 24 4
gpt4 key购买 nike

我正在尝试在 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")

如有任何建议,我们将不胜感激。

干杯!

最佳答案

您需要将这些添加到您的函数中。

中断 = 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")

关于R 热图着色取决于高于或低于零的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8218049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com