R绘图笔记 | 热图绘制

关于绘图,前面介绍了一些:

R绘图笔记 | 一般的散点图绘制

R绘图笔记 | 柱状图绘制

R绘图笔记 | 直方图和核密度估计图的绘制

R绘图笔记 | 二维散点图与统计直方图组合

R绘图笔记 | 散点分布图与柱形分布图

R绘图笔记 | 箱形图的绘制

R绘图笔记 | 小提琴图与漂亮的云雨图绘制

R绘图笔记 | 多数据系列的箱型图与带抖动散点的多数据系列箱型图

这里介绍热图,热图在生信文章中很常见,几乎都有。

一.读入数据

如果你想获取该数据用于自己练习,下面是获取数据的地址:

https://docs.qq.com/sheet/DV3lUY3NodG5TdWFz

数据格式是这样的。

数据第A列是病人ID,B列样本信息(Trmor/Normal),其他列是病人的标准化后的基因表达数据。

你可以保存副本导出,然后自己读入处理成下面这种样式:

library(ComplexHeatmap)library(circlize)library(dendextend)library(pheatmap)library(RColorBrewer)data <- read.csv("BioInfoNotesData2.csv",row.names = 1,stringsAsFactors = F)
dim(data)Type <- data$sampledata <- t(data[,-1])rownames(data) <- paste0("Gene ",1:20)head(data)[,1:4]

二.绘图

1.pheatmap包绘图

其实,关于这个包绘制热图,很简单,官方的案例,你运行一遍就知道是什么意思了。

上面的数据,直接作为参数就可以直接出图了。

pheatmap(data)

然后我们发现,很丑,我们知道列名是病人的ID,可以不显示,一定有参数设置不显示列名。

pheatmap(mat, color = colorRampPalette(rev(brewer.pal(n = 7, name = "RdYlBu")))(100), kmeans_k = NA, breaks = NA, border_color = "grey60", cellwidth = NA, cellheight = NA, scale = "none", cluster_rows = TRUE, cluster_cols = TRUE, clustering_distance_rows = "euclidean", clustering_distance_cols = "euclidean", clustering_method = "complete", clustering_callback = identity2, cutree_rows = NA, cutree_cols = NA, treeheight_row = ifelse((class(cluster_rows) == "hclust") || cluster_rows, 50, 0), treeheight_col = ifelse((class(cluster_cols) == "hclust") || cluster_cols, 50, 0), legend = TRUE, legend_breaks = NA, legend_labels = NA, annotation_row = NA, annotation_col = NA, annotation = NA, annotation_colors = NA, annotation_legend = TRUE, annotation_names_row = TRUE, annotation_names_col = TRUE, drop_levels = TRUE, show_rownames = T, show_colnames = T, main = NA, fontsize = 10, fontsize_row = fontsize, fontsize_col = fontsize, angle_col = c("270", "0", "45", "90", "315"), display_numbers = F, number_format = "%.2f", number_color = "grey30", fontsize_number = 0.8 * fontsize, gaps_row = NULL, gaps_col = NULL, labels_row = NULL, labels_col = NULL, filename = NA, width = NA, height = NA, silent = FALSE, na_col = "#DDDDDD", ...)

show_rownames = T, show_colnames = T都是默认显示的,可以改为FALSE。

pheatmap(data,show_colnames = F)

另外,我们还可以看出,基因的排序不是按照我们数据框的顺序排的,它给我们聚类排序了。cluster_rows = TRUE, cluster_cols = TRUE默认就是对列和行聚类,你可以设置不聚类。自己去试试。clustering_method指定聚类方法。kmeans_k参数用来指定聚类个数。 cellwidth = NA, cellheight = NA,用来指定每个小格子的宽和高。color指定颜色。display_numbers指定是否显示数值,fontsize_number指定字体大小,number_format参数可以设置数值格式,比如保留几位小数。legend指定是否显示图例。main指定图的标题,fontsize指定字体大小。

pheatmap(data,show_colnames = F,cluster_rows = F, color = colorRampPalette(c("navy", "white", "firebrick3"))(50))

通常情况下,我们还是要有分组注释的。也就是为行和列生成注释,说白了就是分组信息,用annotation_col与annotation_row 参数设置,annotation_legend就用来指定注释信息。

设置列注释:

annotation_col = data.frame(Type = factor(Type))rownames(annotation_col) = colnames(data)head(annotation_col)

设置行注释:

annotation_row = data.frame(GeneClass = factor(rep(c("Path1", "Path2", "Path3"), c(10, 4, 6))))rownames(annotation_row) = rownames(data)head(annotation_row)
pheatmap(data, annotation_col = annotation_col,annotation_row=annotation_row, show_colnames = F)

2.ComplexHeatmap包Heatmap函数绘图

这个函数绘图,数据量太大的话,不适合,所以前面的数据取一部分样本进行绘制就行。

data2 <- data[,c(1:20,(ncol(data)-19):ncol(data))]
df<-scale(data2) #使用scale方法来对数据进行标准化,以消除量纲对数据结构的影响row_dend = hclust(dist(df)) # 根据行对数据进行系统性聚类col_dend = hclust(dist(t(df))) # 根据列对数据进行系统性聚类mycol <-rev(brewer.pal(n = 7, name = "RdYlBu")) #构造颜色映射方案Heatmap(df, col = mycol,name = "",rect_gp = gpar(col = "black"), show_column_names=F, column_dend_height = unit(4, "cm"), #设定列聚类显示部分的高度 row_dend_width = unit(4, "cm"), #设定行聚类显示部分的宽度 cluster_rows = color_branches(row_dend, k = 4), #设定行聚类成4类 cluster_columns = color_branches(col_dend, k = 2)) #设定列聚类成2类

参数和前面的pheatmap函数差不多,看名字几乎就知道什么意思。

最后,我自己还是喜欢pheatmap函数。

pheatmap(scale(data2), annotation_col = annotation_col,annotation_row=annotation_row, show_colnames = F,cluster_cols = F,annotation_names_row = F,cellwidth = 15, cellheight = 12, color = colorRampPalette(c("navy", "white", "firebrick3"))(50))

参考资料:

  1. R语言数据可视化之美,张杰/著

  2. pheatmap帮助文档

(0)

相关推荐

  • 快来使用ggheatmap强化你的热图吧!

    创作原因 用法 参数 可视化 综合示例 结语 创作原因 目前最为常见的热图绘制R包,主要包括pheatmap和ComplexHeatmap(仅个人使用习惯).它们强大的功能,基本可以满足所有科研人员的 ...

  • ggheatmap复现CNS级美图

    前面我们推送了南方医的一个后起之秀的新R包:快来使用ggheatmap强化你的热图吧!目前已经正式被R语言社区的CRAN接受了,大家可以放心的使用起来! 下面是包作者的实战笔记 前言:自从公开gghe ...

  • ComplexHeatmap绘制热图详细步骤

    pheatmap是一个非常受欢迎的绘制热图的R包.ComplexHeatmap包即是受之启发而来.你可以发现Heatmap()函数中很多参数都与pheatmap()相同.在pheatmap的时代(请允 ...

  • 使用NMF代替层次聚类

    前面我们在教程:使用R包deconstructSigs根据已知的signature进行比例推断,顺利的把508个病人,根据11个signature进行了比例推断,得到的比例矩阵以普通的热图,以及phe ...

  • R语言学习系列之“多变的热图”

    咱公众号也不能只做一个系列,所以经过深思熟虑,打算将来慢慢增加一些内容,主要有以下几个系列TCGA数据分析系列GEO数据分析系列"老板给一个基因,我该怎么办"系列文献阅读系列R语言 ...

  • 16s分析之差异展示(热图)

    前两天我向大家推了16s做差异分析的两个包(没有看的请点击下面链接): 1.16s分析之差异分析(DESeq2) 2.16s分析之差异OTU 挑选(edgeR) 差异做出来了如何展示,也是一个值得思考 ...

  • 技术贴 | R语言:手把手教你画pheatmap热图

    导读: pheatmap默认会对输入矩阵数据的行和列同时进行聚类,但是也可以通过布尔型参数cluster_rows和cluster_cols设置是否对行或列进行聚类,具体看分析需求.利用display ...

  • 多分组热图不用愁,Pheatmap来帮忙

    [Pheatmap 绘制多分组热图] 热图作为实验数据分布情况的直观展示方法,已经成为高分文章的不错选择,它不仅可以对数据质量进行具像化展示,还可以对数据和样品进行聚类.在R中有多个包均可绘制热图,今 ...

  • R绘图笔记 | 箱形图的绘制

    关于绘图图,前面介绍了一些: 这里介绍箱形图的绘制,这些图形在文章中是很常见的,也是必须要掌握的.比如下图中的E图(来自文献:DOI: 10.1002/jcp.30015 ) 一.读入数据 如果你想获 ...

  • R绘图笔记 | 小提琴图与漂亮的云雨图绘制

    关于绘图图,前面介绍了一些: R绘图笔记 | 一般的散点图绘制 R绘图笔记 | 柱状图绘制 R绘图笔记 | 直方图和核密度估计图的绘制 R绘图笔记 | 二维散点图与统计直方图组合 R绘图笔记 | 散点 ...

  • R绘图笔记 | 火山图的绘制

    关于绘图,前面介绍了一些: R绘图笔记 | 一般的散点图绘制 R绘图笔记 | 柱状图绘制 R绘图笔记 | 直方图和核密度估计图的绘制 R绘图笔记 | 二维散点图与统计直方图组合 R绘图笔记 | 散点分 ...

  • R绘图笔记 | 生存曲线的绘制

    关于绘图,前面介绍了一些: R绘图笔记 | 一般的散点图绘制 R绘图笔记 | 柱状图绘制 R绘图笔记 | 直方图和核密度估计图的绘制 R绘图笔记 | 二维散点图与统计直方图组合 R绘图笔记 | 散点分 ...

  • R绘图笔记 | 直方图和核密度估计图的绘制

    前面,介绍过散点图绘制,也介绍了柱状图的绘制.本文介绍直方图和核密度估计图的绘制. 1.直方图 直方图是数值数据分布的精确图形表示.这是一个连续变量(定量变量)的概率分布的估计,并且被卡尔·皮尔逊(K ...

  • 技术贴 | R语言:大样本多组学的相关性计算、热图绘制

    本文由可爱的乔巴根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 上期介绍了利用psych包计算两组小样本的相关性并进行热图可视化,但当样本数据量非常大时,psych包会耗费的时 ...

  • 技术贴 | R语言:小样本多组学的相关性计算、热图绘制

    本文由可爱的乔巴根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 在多组学数据关联挖掘中,在我们筛选到目标基因集以及目标蛋白质集合或目标代谢物集合后,在进行基因与蛋白质或代谢关联 ...

  • R绘图笔记 | 一般的散点图绘制

    R绘图笔记 | 一般的散点图绘制

  • R绘图笔记 | 柱状图绘制

    R绘图笔记 | 柱状图绘制