添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在生信分析中,我们常常需要计算一个样本的几次实验结果或者不同样本实验结果的相关系数(样本间相关系数)以判断几个数据集之间相关的程度。
在本篇中及之后的内容中,为了用R得到相关系数热图(本篇中主要介绍了样本间的相关系数图,因为我刚好在做这个……),分别使用了pheatmap包(实验室的小伙伴推荐的)和corrplot包(我自己google找到的)进行了学习和实践,并对这些包中常用的参数进行了简单的介绍。

pheatmap包

pheatmap简介

官方介绍:
A function to draw clustered heatmaps where one has better control over some graphical parameters such as cell size, etc

pheatmap实际上是 Pretty Heatmaps 的缩写,简单地来说,一个可以傻瓜式绘制聚类热图的R包。

常用参数介绍

基础设置
main 图的名字
file 要保存图的名字
color 表示颜色,赋值渐变颜色调色板colorRampPalette属性,选择“绿,黑,红”渐变,分为100个等级,,例:color = colorRampPalette(c(“navy”, “white”, “firebrick3”))(102)
sclae 表示值均一化的方向,或者按照行或列,或者没有,值可以是"row", “column” 或者"none"
margins 表示页边空白的大小
fointsize 表示每一行的字体大小

聚类相关设置
cluster_cols 表示进行列的聚类,值可以是FALSE或TRUE
cluster_row 同上,是否进行行的聚类
treeheight_row 设置row方向的聚类树高
treeheight_col 设置col方向的聚类树高
clustering_distance_row 表示行距离度量的方法
clustering_distance_cols 同上,表示列距离度量的方法
clustering_method 表示聚类方法,值可以是hclust的任何一种,如"ward.D",“single”, “complete”(默认), “average”, “mcquitty”, “median”, “centroid”, “ward.D2”

legend设置
legend TRUE或者FALSE,表示是否显示图例
legend_breaks 设置图例的断点,格式:vector
legend_labels legend_breaks对应的标签 例:legend_breaks = -1:4, legend_labels = c(“0”,“1e-4”, “1e-3”, “1e-2”, “1e-1”, “1”)

单元格设置
border_color 表示热图上单元格边框的颜色,如果不绘制边框,则使用NA
cellheight 表示每个单元格的高度
cellwidth 表示每个单元格的宽度
单元格中的数值显示:
display_numbers 表示是否将数值显示在热图的格子中,如果这是一个矩阵(与原始矩阵具有相同的尺寸),则显示矩阵的内容而不是原始值。
fontsize 表示热图中字体显示的大小
number_format 设置显示数值的格式,较常用的有"%.2f"(保留小数点后两位),"%.1e"(科学计数法显示,保留小数点后一位)
number_color 设置显示内容的颜色

热图分割设置
cutree_rows 基于层次聚类(使用cutree)划分行的簇数(如果未聚集行,则忽略参数)
cutree_cols 基于层次聚类(使用cutree)划分列的簇数

annotation相关设置
annotation_row 行的分组信息,需要使用相应的行名称来匹配数据和注释中的行,注意之后颜色设置会考虑离散值还是连续值,格式要求为数据框
annotation_col 同上,列的分组信息
annotation_colors 用于手动指定annotation_row和annotation_col track颜色的列表。
annotation_names_row boolean值,显示是否应绘制行注释track的名称。
annotation_names_col 同上,显示是否应绘制列注释track的名称。

install.packages(“pheatmap”) #安装pheatmap包
library(pheatmap) #加载pheatmap包
?pheatmap #查看pheatmap包里面的详细介绍
?pheatmap::pheatmap #查看pheatmap包里pheatmap函数的具体参数

绘制样本间相关系数图(简单使用)

(1)加载数据集:all_data
all_data为数据框格式,共包含9696996行,5列(5个样本),如下图所示。
在这里插入图片描述

colnames(all_data) <- c( 's1', 's2','s3 ', 's4','s5')  #为数据框指定列名

(2)求样本间的相关系数

matrix <- cor (all_data[1:5])   #数据框格式可直接使用cor函数求相关系数

得到的matrix:
在这里插入图片描述
(3)绘制相关系数热图

pheatmap(matrix)
pheatmap(matrix,display_numbers=T)   #在热图的单位格中显示数值
pheatmap(matrix,display_numbers=T,color=colorRampPalette(rev(c("red","white","blue")))(102))  #自定义颜色,使用红白蓝色系
pheatmap(matrix,display_numbers=T,fontsize=15)  #fontsize设置热图中整体的字体为15

差异表达基因热图(进阶使用)

(1)生成测试数据集

#测试数据的生成参考了参考资料的第三个
test = matrix(rnorm(200), 20, 10)
test[1:10, seq(1, 10, 2)] = test[1:10, seq(1, 10, 2)] + 3
test[11:20, seq(2, 10, 2)] = test[11:20, seq(2, 10, 2)] + 2
test[15:20, seq(2, 10, 2)] = test[15:20, seq(2, 10, 2)] + 4
colnames(test) = paste("Test", 1:10, sep = "")
rownames(test) = paste("Gene", 1:20, sep = "")

(2)直接生成热图

pheatmap(test)
pheatmap(test,treeheight_row=100,treeheight_col=20)  #设置col、row方向的树高
#取消列聚类,并且更改颜色
pheatmap(test,treeheight_row=100,treeheight_col=20,cluster_cols=FALSE,color=colorRampPalette(c("green","black","red"))(1000))  
 #取消单元格间的边框,调整字体大小,并且保存在桌面文件中
pheatmap(test,treeheight_row=100,treeheight_col=20,cluster_cols=FALSE,color=colorRampPalette(c("green","black","red"))(1000),border_color=NA,fontsize=10,fontsize_row=8,fontsize_col=16,file='C:/Users/xu/Desktop/test.jpg')   
#增加分组信息,使得pheatmap显示行或列的分组信息
#这部分以及之后的内容参考了第四篇参考文献
annotation_col = data.frame(CellType = factor(rep(c("X1", "X2"), 5)), Time = 1:5)  #增加Time,CellType分组信息
rownames(annotation_col) = paste("Test", 1:10, sep = "")   
annotation_row = data.frame(GeneClass = factor(rep(c("P1", "P2", "P3"), c(10, 7, 3))))  #增加GeneClass分组信息
rownames(annotation_row) = paste("Gene", 1:20, sep = "") 
pheatmap(test, annotation_col = annotation_col, annotation_row = annotation_row)
#使用annotation_colors参数设定各个分组的颜色  
ann_colors = list(Time = c("white", "green"),cellType = c(X1= "#1B9E77", X2 = "#D95F02"),GeneClass = c(P1 = "#7570B3", P2 = "#E7298A", P3 = "#66A61E"))   
pheatmap(test, annotation_col = annotation_col, annotation_row = annotation_row, annotation_colors = ann_colors) 
# cutree_rows, cutree_cols可以根据行列的聚类数将热图分隔开;
pheatmap(test,cutree_rows=3,cutree_cols=2)

如何查看pheatmap的聚类结果

result <- pheatmap(test)
summary(result)
# 行的聚类排列顺序
result$tree_row$order 
#  得到行名的顺序
rownames(test)[result$tree_row$order]
# 查看按行聚类后的热图顺序结果
head(test[result$tree_row$order,])
# 查看按照行和列聚类之后,得到的热图顺序结果
head(test[result$tree_row$order,result$tree_col$order])

pheatmap总结

pheatmap总体来说使用起来比较简单,可以同时绘制热图和系统树图,参数的设置也很简单。此外,pheatmap包默认计算两两样本间的欧氏距离,然后利用欧式距离实现样本的聚类。
 

corrplot包

本来打算一起写在这篇这里的,但是写到这里内容已经很多了,所以这部分的内容会在下一篇出现。
下一篇链接更新:
R语言绘制热图(其实是相关系数图)实践(二)corrplot包

干货 | heatmap常用参数应用及案例演示
5个画热图的R包,你都知道吗?
R语言绘制热图——pheatmap
R语言绘制热图——pheatmap_可视化分析
用R包中heatmap画热图

R语言绘制热图实践 (一)pheatmap前言pheatmap包pheatmap简介常用参数介绍使用安装绘制样本间相关系数图(简单使用)差异表达基因热图(进阶使用)pheatmap总结corrplot包参考资料前言在生信分析中,我们常常需要计算一个样本的几次实验结果或者不同样本实验结果的相关系数(样本间相关系数)以判断几个数据集之间相关的程度。在本篇中及之后的内容中,为了用R得到相关系数热图... # Create test matrix test = matrix(rnorm(200), 20, 10) test[1:10, seq(1, 10, 2)] = test[1:10, seq(1, 10, 2)] + 3 test[11:20, seq(2, 10, 2)] = test[11:20, seq(2, 10, 2)] + 2 test[15:20, seq(2, 10, 2)] = test[15:20, seq(2, 10, 2)] + 4 colnames(tes
一般来说,R中使用pheatmap绘制聚类热力的写法如下: pheatmap(sample_1,scale = "row",fontsize=6, fontsize_col = 8,cluster_cols = F, color = colorRampPalette(c("steelblue", "white", "firebrick3"))(10), 这里的第一参数为数据,第二个参数 scale="row" 表示对于行数据进行 归一化 , cluster_cols 表示是否对列
pheatmap: Pretty Heatmaps——Implementation of heatmaps that offers more control over dimensions and appearance. library(pheatmap) #创建数据集test测试矩阵 test = matrix(rnorm(200), 20, 10) test[1:10, seq(1, 10,
A function to draw clustered heatmaps where one has better control over some graphical parameters such as cell size, etc. pheatmap 这个可以认为是heatmap的加强版,基本可以一走天下了。 一、参数解析 Usage pheatmap(mat, c.
目录前言corrplot简介语法和常用参数介绍函数语法参数介绍实践summary参考资料 在我的上一篇的内容中(R语言绘制热图实践(一)pheatmap ),我以绘制相关系数为出发点,介绍了使用pheatmap相关系数热图的一些使用。 为了对比,这篇将介绍使用Rcorrplot进行相关系数的一些实践以及corrplot的一些使用。 corrplot简介 The...
1.什么是热图? 在组学研究的相关文章中,我们常常可以看到热图Heatmap)的展示。这些红绿相间且色彩变化丰富的热图总是能吸引读者的眼球,从而为文章增添不少亮色。当然,作为严谨的科学研究论文,表的展示当然不可能仅仅是为了好看。热图作为一种对实验数据及其分析结果的直观的表达方式,在很多文章中都有着不可或缺的地位。 它是一种将规则化矩阵数据转换成颜色色调的常用的可视化方法,其中每个单元格对应数据的某些属性,属性的值通过颜色映射转换为不同色调并按规则填充单元格。 本文我们就来讨论一下热图是如何绘制的以
这是一个示例代码,用于绘制R语言物种丰度热图:# 读取数据 data <- read.csv("species_abundance.csv")# 绘 p <- ggplot(data, aes(x = species, y = abundance)) + geom_col(fill = "blue") + scale_y_continuous(breaks = c(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100)) + labs(title = "物种丰度热图", x = "物种", y = "丰度")# 显示绘制 print(p)