R 中的热图(使用 heatmap() 函数)
Heatmap in R (using the heatmap() function)
我有一个相关矩阵,想要获得从冷(负相关)到红色(正相关)的热图,其中白色为 0 相关。
现在,热图命令似乎以某种方式平均,即使我说 'scale=none',这意味着平均相关性被描绘为白色(在我的例子中,它是 0.2,这意味着所有 0 相关性都是略带蓝色)。
你能帮我解决这个问题吗?谢谢
library(stats)
library(gplots)
library(RColorBrewer)
heatmap(graph.g,Colv = NA, Rowv=NA, revC=T, scale='none',
xlab= "IDS-C30 symptoms", main = "Heatmap of glasso associations",
col = rev(brewer.pal(11,"RdBu")))
这不是一个优雅的解决方案,但似乎可以完成工作。要点是将频谱限制为相关矩阵所取的值,并且为了使这个更平滑,调色板从 brewer.pal
提供的 11 值最大值拉伸(使用奇数重复,以便中值保持一个整数)。
vec <- rep(rev(brewer.pal(11,"RdBu")), each = 101) # stretched palette
med <- (length(vec) + 1) / 2 # middle of palette
rad <- length(vec) - med # radius of palette
min.g <- med + min(graph.g) * rad # lowest value taken
max.g <- med + max(graph.g) * rad # highest value taken
heatmap(graph.g,Colv = NA, Rowv=NA, revC=T, scale='none',
xlab= "IDS-C30 symptoms", main = "Heatmap of glasso associations",
col = vec[min.g:max.g]) # palette restricted to realized values
对于相关矩阵,您还可以使用 corrplot or corrgram libraries that are designed especially for this purpose. They work out of the box and also have additional plotting features. In R Graphics Cookbook you can find examples 如何使用 geom_tile()
或 geom_raster()
函数使用 ggplot2 绘制此类图。
library(corrplot)
library(corrgram)
library(ggplot2)
library(reshape2)
corrplot(cor(mtcars))
corrplot(cor(mtcars), method="color")
corrgram(cor(mtcars))
corrgram(cor(mtcars), lower.panel=panel.shade,
upper.panel=panel.pie)
p <- ggplot(melt(cor(mtcars)), aes(x=Var1, y=Var2, fill=value))
p + geom_tile() + scale_fill_gradient2(midpoint=0, limits=c(-1, 1))
我有一个相关矩阵,想要获得从冷(负相关)到红色(正相关)的热图,其中白色为 0 相关。
现在,热图命令似乎以某种方式平均,即使我说 'scale=none',这意味着平均相关性被描绘为白色(在我的例子中,它是 0.2,这意味着所有 0 相关性都是略带蓝色)。
你能帮我解决这个问题吗?谢谢
library(stats)
library(gplots)
library(RColorBrewer)
heatmap(graph.g,Colv = NA, Rowv=NA, revC=T, scale='none',
xlab= "IDS-C30 symptoms", main = "Heatmap of glasso associations",
col = rev(brewer.pal(11,"RdBu")))
这不是一个优雅的解决方案,但似乎可以完成工作。要点是将频谱限制为相关矩阵所取的值,并且为了使这个更平滑,调色板从 brewer.pal
提供的 11 值最大值拉伸(使用奇数重复,以便中值保持一个整数)。
vec <- rep(rev(brewer.pal(11,"RdBu")), each = 101) # stretched palette
med <- (length(vec) + 1) / 2 # middle of palette
rad <- length(vec) - med # radius of palette
min.g <- med + min(graph.g) * rad # lowest value taken
max.g <- med + max(graph.g) * rad # highest value taken
heatmap(graph.g,Colv = NA, Rowv=NA, revC=T, scale='none',
xlab= "IDS-C30 symptoms", main = "Heatmap of glasso associations",
col = vec[min.g:max.g]) # palette restricted to realized values
对于相关矩阵,您还可以使用 corrplot or corrgram libraries that are designed especially for this purpose. They work out of the box and also have additional plotting features. In R Graphics Cookbook you can find examples 如何使用 geom_tile()
或 geom_raster()
函数使用 ggplot2 绘制此类图。
library(corrplot)
library(corrgram)
library(ggplot2)
library(reshape2)
corrplot(cor(mtcars))
corrplot(cor(mtcars), method="color")
corrgram(cor(mtcars))
corrgram(cor(mtcars), lower.panel=panel.shade,
upper.panel=panel.pie)
p <- ggplot(melt(cor(mtcars)), aes(x=Var1, y=Var2, fill=value))
p + geom_tile() + scale_fill_gradient2(midpoint=0, limits=c(-1, 1))