R语言 pheatmap 包绘制热图(基础部分)
运用 R语言 pheatmap 包绘制热图(基础部分)
作者:fafa 生信 小蘑菇
主要内容:
- 对绘图文件格式的说明
- 对数据处理的说明,这里的数据是物种属水平相对丰度表
- 对pheatmap包基本绘图参数的修改,单元格的设置,聚类的设置,颜色的修改,单元格填充字体
示例数据存放在百度云,可自取 链接: https:// pan.baidu.com/s/1O3rBFh G77YrclDixyncNrA 提取码:4bek
设置工作目录和加载所需包
#设置自己的工作目录
## 注意使用反斜杠或者(\\)
setwd("C:/Users/shanpengloveforever/Desktop")
library(pheatmap) # 本次所使用的热图绘制包,如果没有安装包,记得提前安装好
library(vegan) #vegan包待会可以用来标准化和中心化数据
导入数据和简单出图
这里用到的示例数据是一组属水平的相对丰富表
接下来我们通过read.table函数将数据导入
data<-read.table("示例数据.txt",header=T,sep="\t",row.names=1)
View(data) #查看数据
data <- as.data.frame(data) #将数据转化为data.frame格式
直接出图
pheatmap(data) #运用这个可以直接出图,但是不能直接使用,得对数据进行处理
对数据进行标准化和中心化处理
这里对数据的 行 进行 Z-scores 标准化和中性化处理,当然你可以用其他方法来对数据处理。
data.1 <- decostand(data,"standardize",MARGIN = 1)
#data.1 <- as.data.frame(scale(data))#第二种方法,但是这个默认是对列进行处理
View(data.1)
#c查看其标准差
apply(data.1,1,sd)
我们对这个经过标准化和中心化的数据,直接绘制热图,看看其效果怎样。
pheatmap(data.1) #出图
其实这个热图已经可以使用了,对要求不高的同学,但是别忘记了属是要斜体的。 接下来我们对热图进行美化。
热图美化
对热图聚类的修改
clustering_method参数来设定不同聚类方法
# 使用clustering_method参数来设定不同聚类方法,默认为"complete",
#可以设定为'ward', 'ward.D', 'ward.D2', 'single', 'complete', 'average', 'mcquitty', 'median' or 'centroid'等
pheatmap(data.1, clustering_method = "mcquitty")
可以看到修改聚类方法,热图还是有一定差距的,可以根据自己的实际需求来选择合适的方法
clustering_distance_rows行聚类距离度量
# 行列聚类距离度量
# clustering_distance_rows = "correlation"参数设定行聚类距离方法为Pearson corralation,默认为欧氏距离"euclidean"
#clustering_distance_cols 表示列距离度量的方法
pheatmap(data.1,clustering_distance_rows = "correlation",
clustering_distance_cols= "correlation" )
cluster_row = FALSE参数设定不对行进行聚类;cluster_cols = FALSE参数设定不对列进行聚类
pheatmap(data.1,
cluster_row = FALSE,cluster_cols = FALSE)
treeheight_row 设置行的聚类树高,treeheight_col 设置列的聚类树高
# 可以选择一个合适的聚类高度
pheatmap(data.1,
treeheight_row=100,treeheight_col=50)
热图颜色修改
color参数来修改颜色,这里使用赋值渐变颜色调色板colorRampPalette
# 选择“紫,白,红”渐变,分为50个等级,可以选择自己喜欢的颜色,但是需要美感
pheatmap(data.1, color = colorRampPalette(c("navy", "white", "firebrick3"))(50))
热图单元格的设置
它默认是有单元格的,所以我们可以修改单元格的边框颜色或者将其去掉
border_color参数设定热图格子的边框色
# 修改边框颜色为黑色
pheatmap(data.1, border_color = "black")
border=FALSE参数去掉边框线
# 去掉边框线
pheatmap(data.1, border=FALSE)
cellheight 修改每个单元格的高度;cellwidth 修改每个单元格的宽度
# 将单元格的高度和宽度都设置为20
pheatmap(data.1,cellwidth = 20, cellheight = 20)
- display_numbers = TRUE设定每个热图格子中显示相应的数值;
- fontsize 修改热图中字体大小
- number_color 设置显示内容的颜色
- number_format 修改数值的格式,常用的有 "%.2f"(保留小数点后两位) "%.1e"(科学计数法显示,保留小数点后一位)
# 将单元格的高度和宽度都设置为20
pheatmap(data.1, border_color = "black", #边框线为黑色
display_numbers = TRUE, #热图格子中显示相应的数值
number_color = "black", #字体颜色为黑色
fontsize=10, #字体大小为10
number_format = "%.1f", #保留一位小数
fontface="italic") #将字体设置为斜体
自定义数值的显示方式
# 数值大于1.5的用*表示
pheatmap(data.1, display_numbers = matrix(ifelse(data.1 > 1.5, "*"," "), nrow(data.1)))
图例的设置
*legend TRUE或者FALSE,表示是否显示图例 *legend_breaks参数设定图例显示范围,legend_labels参数添加图例标签
# 设定图例显示范围,添加图例标签
pheatmap(data.1, legend_breaks = c(-2:2),