R语言:使用ComplexHeatmap包绘制热图

ComplexHeatmap包由顾祖光博士创建,用于绘制美观的热图,用颜色表示数据的聚合程度,相对美观。
使用手册见GitHub链接:
https://jokergoo.github.io/ComplexHeatmap-reference/book/
使用RStudio进行绘制

目标图形为河流底泥重金属的聚类分析热图,绘制流程如下:
1、安装相应package
2、正确导入数据,形成初始图
3、调整画面参数

安装相应package

# 检测安装CRAN包
package_list = c("circlize","grid","BiocManager")
for(p in package_list){
if (!requireNamespace(p, quietly = TRUE))
    install.packages(p)
}
# 检测安装bioconductor包
package_list = c("ComplexHeatmap")
for(p in package_list){
if (!requireNamespace(p, quietly = TRUE))
    BiocManager::install(p)
}

# 加载依赖包
library(circlize)
library(grid)
library(ComplexHeatmap)

正确导入数据
1、点击左上角,新建 R Script,方便后续修改,减少直接在console里试错的代码行数,让画面更简洁,正确代码更方便查找。

2、设置新seed,然后右上角environment中点击import dataset,导入并预览相应的Excel文件(需事先安装读取Excel的package和安装rJava并配置环境)。
3、将数据进行0-1标准化,以消除量纲的影响。其计算方法为:x=(x-min)/(max-min)

R语言:使用ComplexHeatmap包绘制热图_第1张图片

相应代码如下:

set.seed(123)
library(readxl)
data1 <- read_excel(“data1.xls”)
View(data1)
#选择需要画图的列
mat <- subset(data1,select = c(“Cu”,“Zn”,“Pb”,“Cd”,“Cr”,“Ni”,“Hg”,“As”))
#因第一列数据类型为文本,需将其变成矩阵后才可将其作为列名,故将矩阵转置
mat_t <- t(mat)
#对行命名
colnames(mat_t)<-as.matrix(data1[,1])
#画图指令
heatmap(mat_t.scaled)

形成初始图:R语言:使用ComplexHeatmap包绘制热图_第2张图片
调整画面参数
色彩选用RGB颜色,考虑到原数据为已标准化的连续矩阵,可使用一个颜色向量,此时受到极端值的影响,如果数据未标准化,可自行设置颜色取值区间,此时不受极端值影响。

#不受极端值影响,自定义颜色取值区间
   col_fun = colorRamp2(c(0.15,0.2,0.25,0.3,0.35),c("#FFFF00","#FFF68F", "#FFFFE0", "#CAE1FF","#5CACEE"))
   col_fun(seq(0, 1))
library(circlize)
#对不同数据进行分层设定颜色
col_fun = colorRamp2(seq(min(mat_t), max(mat_t), length = 2), c("#FFFAFA","#FF4500"),space = "RGB")
#对左侧聚成的三类进行颜色区分
library(dendextend)
row_dend = as.dendrogram(hclust(dist(mat_t)))
row_dend = color_branches(row_dend, k = 3) # `color_branches()` returns a dendrogram object
#增加边框、各色块间设置自定义线、设置高度,生成图
Heatmap(mat_t, name = "mat",col = col_fun,border = TRUE,rect_gp = gpar(col = "black", lwd = 1),column_dend_height = unit(2, "cm"),row_dend_width = unit(2, "cm"), cluster_rows = row_dend)

R语言:使用ComplexHeatmap包绘制热图_第3张图片

你可能感兴趣的:(R语言学习,R语言)