暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

R语言绘图|一行代码绘制热图(heatmap)

8203
点击关注了解更多哦

热图能够以颜色的变化反映数值变化,同时能对行与列进行聚类,反映数据之间的关联属性,是数据分析中常用图形。本文分别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() 的信息,可在控制台输入 ?heatmaphelp(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"), ...)


如有帮助请多多点赞哦!

参考资料

[1]

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/


文章转载自日常分享的小懒猫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论