热图能够以颜色的变化反映数值变化,同时能对行与列进行聚类,反映数据之间的关联属性,是数据分析中常用图形。本文分别heatmap() 、gplots[1]、pheatmap[2]、d3heatmap[3]、ComplexHeatmap[4]等几不同的绘图函数或R包展示热图绘制的的基本过程。
数据准备
使用R中自带的mtcars数据集进行展示,选择该数据集中的mpg, disp, hp, drat, wt, qsec等6个变量来绘制热图。
head(mtcars) #查看mtcars数据集
# mpg cyl disp hp drat wt qsec vs am gear carb
#Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
#Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
#Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
data <- mtcars[c("mpg","disp","hp","drat","wt", "qsec")] #选择需要的变量
df <- scale(data) #对数据标准化
head(df) #查看标准化后的数据
# mpg disp hp drat wt qsec
#Mazda RX4 0.1508848 -0.57061982 -0.5350928 0.5675137 -0.610399567 -0.7771651
#Mazda RX4 Wag 0.1508848 -0.57061982 -0.5350928 0.5675137 -0.349785269 -0.4637808
#Datsun 710 0.4495434 -0.99018209 -0.7830405 0.4739996 -0.917004624 0.4260068
is.matrix(df) #判断是否为矩阵
#TRUE
1、heatmap()函数
heatmap() 函数是R自带的基础绘图函数,无需加载任何package即可使用。
1.1 基础图形
heatmap(df) #基础图形
1.2 调整颜色。使用RColorBrewer包中的colorRampPalette() 函数调整热图颜色。关于RColorBrewer的使用及配色可参考R语言绘图|如何调用RColorBrewer包对图形颜色进行修改。
install.packages("RColorBrewer")
library(RColorBrewer) #加载package
col <- colorRampPalette((brewer.pal(n = 9, name ="YlGnBu")))(100) #生成颜色
heatmap(df, col = col)
2、gplots包
2.1 基础图形
install.packages("gplots")
library(gplots)
heatmap.2(df) #基础图形
图中虚线表示均值,实线表示与均值的偏离程度,默认按列进行计算。
2.2 进一步调整
library(RColorBrewer)
col <- colorRampPalette((brewer.pal(n = 9, name ="YlGnBu")))(100)
heatmap.2(df, trace = "none", density.info = "none", col = col)
2.3 反转颜色
heatmap.2(df, trace = "none", density.info = "none", col = rev(col))
3、pheatmap包
3.1 基础图形
install.packages("pheatmap")
library(pheatmap)
pheatmap(df) #基础图形
3.2 调整颜色
library(RColorBrewer)
col <- colorRampPalette((brewer.pal(n = 9, name ="YlGnBu")))(100)
pheatmap(df, color = col)
4、d3heatmap包
d3heatmap可以绘制交互式热图。
4.1 基础图形
install.packages("d3heatmap")
library(d3heatmap)
d3heatmap(df) #基础图形
4.2 调整颜色
d3heatmap(df, colors = "Reds", k_row = 4, k_col = 2)
5、ComplexHeatmap包
5.1 基础图形
#安装package
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("ComplexHeatmap")
#加载package
library(ComplexHeatmap)
#绘图
Heatmap(df) #基础图形
5.2 调整颜色
library(RColorBrewer)
col <- colorRampPalette((brewer.pal(n = 9, name ="YlGnBu")))(100)
Heatmap(df,row_km = 4, column_km = 2, col = col)
其他
本文对不同R包绘制热图进行了展示,但关于热图的调整还涉及许多内容,在以后也将更新更详细的调整过程。同时也可以进一步阅读相关R包或对应函数给出的帮助文档,如想了解更多heatmap() 的信息,可在控制台输入 ?heatmap 或 help(heatmap) 来查看更多该函数的绘图参数。此外,还可以参考一个不错的R热图[5]总结。
heatmap(x, Rowv = NULL, Colv = if(symm)"Rowv" else NULL,
distfun = dist, hclustfun = hclust,
reorderfun = function(d, w) reorder(d, w),
add.expr, symm = FALSE, revC = identical(Colv, "Rowv"),
scale = c("row", "column", "none"), na.rm = TRUE,
margins = c(5, 5), ColSideColors, RowSideColors,
cexRow = 0.2 + 1/log10(nr), cexCol = 0.2 + 1/log10(nc),
labRow = NULL, labCol = NULL, main = NULL,
xlab = NULL, ylab = NULL,
keep.dendro = FALSE, verbose = getOption("verbose"), ...)
如有帮助请多多点赞哦!
参考资料
gplots: https://cran.rstudio.com/web/packages/gplots/index.html
[2]pheatmap: https://cran.r-project.org/web/packages/pheatmap/index.html
[3]d3heatmap: https://github.com/rstudio/d3heatmap
[4]ComplexHeatmap: http://www.bioconductor.org/packages/release/bioc/html/ComplexHeatmap.html
[5]Heatmap in R: https://www.datanovia.com/en/lessons/heatmap-in-r-static-and-interactive-visualization/