R 聚类热图-数据的标准化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R 聚类热图-数据的标准化相关的知识,希望对你有一定的参考价值。
参考技术A 最近一直在学习转录组分析,在绘制差异表达基因热图的时候遇到了个坑?我发现的做出来的热图和别人不一样。如下图所示,图1是我的,图2是别人家的。怎么解决呢?直接取对数吗?
如果对表达量去一下log10,发现10000变成了4,10变成了1,这样之前离散程度很大的数据就被集中了。
聚类分析中均一化是如何计算的?
表达矩阵每行数据的各个数值减去每行数据的均值,再除以每行数据的标准差。
详细的数据规范化(归一化)、及Z-score标准化可参考教程 https://blog.csdn.net/weixin_38706928/article/details/80329563
关于R环境搭建可参考教程, 【R语言入门】R语言环境搭建 -
绘制热图
通过一些数学函数,将原始值进行映射。该方法包括log、指数、正切等。当变量是正偏态分布的时候,选用log对数。是否取对数可根据自己的需求。
ps:生信小白一枚。内容仅供参考,和谐交流 ,欢迎大佬指导,也欢迎大家一起学习。
R 数据可视化 —— 聚类热图 pheatmap
参考技术A 在前面的章节中,我们介绍了如何使用 ggplot2 绘制热图ggplot2 绘制热图的方式很多,如 geom_raster 、 geom_tile 等
但通常仅仅绘制热图是不够的,还需要对数据进行聚类,即绘制聚类热图。
例如,最常用的就是将差异基因的表达值绘制聚类热图,来查看基因在不同样本中的表达差异情况,或者比较不同聚类分组之间的差异。
绘制聚类热图的包有很多,我们主要介绍 pheatmap 和 ComplexHeatmap
假设我们有如下数据
要绘制简单的热图,可以使用内置的 heatmap 函数
更改颜色,并为列添加列样本的分类颜色条
内置函数提供的样式较少,无法对某些图形属性进行设置。
所以下面我们使用 pheatmap 包来绘制热图
pheatmap 对图形属性提供了更精细的控制
这样看起来怪怪的,应该是基因的表达量差异,所以对行进行标准化
嗯,一下子就顺眼多了,实验组和对照组的基因表达量差别明显
默认情况下,会对数据的行列分别进行层次聚类,如果我们想在进行层次聚类之前,先对行特征,也就是基因进行 k-means 聚类,我们可以
先将基因聚为 3 类,再进行层次聚类
如果只想对其中行列中的一个进行聚类,可以使用 cluster_rows 和 cluster_cols 参数,取消对行或列的距离
默认的距离度量为欧氏距离,也可以分别为行列指定不同的距离度量,例如
也可以使用 clustering_method 参数来指定不同的聚类方法,支持以下几种方法:
图例的设置很简单,即通过 legend_breaks 参数设置断点, legend_labels 参数设置断点处的标签
如果不想显示图例,直接设置 legend = F 就行
设置边框颜色
删除边框
默认情况下,单元格的长度和宽度会根据图片的大小自动调整,如果想固定单元格的大小,可以使用 cellwidth 和 cellheight 两个参数
如果我们想在单元格中显示对于的数值,可以设置 display_numbers = TRUE
对显示的数值进行格式化
或者,为 display_numbers 参数传递一个矩阵
例如,根据表达值是否大于 100 来显示不同的标记
在不对数据进行聚类的情况下,可以对行列进行自定义划分为不同的块
或者只对行或列进行分块
总之,只能对未聚类的行或列进行分块
或者,根据层次聚类的结果,对数据进行分块
使用 main 参数来设置图像的标题
可以使用 show_colnames 和 show_rownames 不显示标签
分别设置标签的大小,同时设置列标签的倾斜角度,可选的角度有 270、0、45、90、315
也可以使用 fontsize 参数统一行列标签的大小
也可以自定义行列标签
我们可以分别为行和列构建分组信息,例如对于行是基因,可以将其分为癌基因和抑癌基因等,而列为样本可以分为癌症和配对正常样本,同时样本对应的患者应该会有年龄性别等信息
例如
我们可以将这些信息以颜色条的方式添加到图中
隐藏图例
我们可以回去 pheatmap 函数返回的对象的信息
可以看到,返回对象 p 中包含 4 个变量,我们可以根据 tree_row 和 tree_col 提取出对应的行列顺序
提取这些信息有助于我们对数据进行分组,用于后续分析
参数列表
数据:
https://github.com/dxsbiocc/learn/blob/main/data/RPKM_DEG.csv
以上是关于R 聚类热图-数据的标准化的主要内容,如果未能解决你的问题,请参考以下文章