r语言绘制热图 怎么对矩阵进行赋值

r语言绘制热图 怎么对矩阵进行赋值,第1张

> matrix(1:9,3,3,T)

[,1] [,2] [,3]

[1,] 1 2 3

[2,] 4 5 6

[3,] 7 8 9

matrix是定义矩阵的函数,1:9表示1-9连续9个数,第一个3表示3行,第二个3表示3列,T表示转置,TRUE的缩写

运行第一行,后面那是enter后的,有问题可以互相交流

theme: 是处理图美观的一个函数,可以调整横纵轴 label 的选择、图例的位置等。

这里选择 X 轴标签 45 度。

hjust 和 vjust 调整标签的相对位置,

具体见下图。

简单说,hjust 是水平的对齐方式,0 为左,1 为右,05 居中,0-1 之间可以取任意值。

vjust 是垂直对齐方式,0 底对齐,1 为顶对齐,05 居中,0-1 之间可以取任意值。

legendposition, 可以接受的值有 top, bottom, left, right, 和一个坐标 c(005,08) (左上角,坐标是相对于图的左下角 (即原点) 计算的)

为了更好的可视化效果,需要对数据做些预处理,主要有 对数转换,Z-score 转换,抹去异常值,非线性颜色等方式。

Z-score 又称为标准分数,是一组数中的每个数减去这一组数的平均值再除以这一组数的标准差,代表的是原始分数距离原始平均值的距离,以标准差为单位。可以对不同分布的各原始分数进行比较,用来反映数据的相对变化趋势,而非绝对变化量。

正常来讲,颜色的赋予在最小值到最大值之间是均匀分布的。如果最小值到最大值之间用 100 个颜色区分,则其中每一个 bin,不论其大小、有没有值都会赋予一个颜色。非线性颜色则是对数据比较小但密集的地方赋予更多颜色,数据大但分布散的地方赋予更少颜色,这样既能加大区分度,又最小的影响原始数值。通常可以根据数据模式,手动设置颜色区间。为了方便自动化处理,也可选择用四分位数的方式设置颜色区间。

如果想保持图中每一行的顺序与输入的数据框一致,需要设置因子的水平。这也是 ggplot2 中调整图例或横纵轴字符顺序的常用方式。

绘制热图除了使用 ggplot2,还可以有其它的包或函数,比如 pheatmap::pheatmap (pheatmap 包中的 pheatmap函数)、gplots::heatmap2 等。

相比于 ggplot2 作 heatmap, pheatmap 会更为简单一些,一个函数设置不同的参数,可以完成行列聚类、行列注释、Z-score 计算、颜色自定义等。

给矩阵的行和列进行分组注释

在前面的章节中,我们介绍了如何使用 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 提取出对应的行列顺序

提取这些信息有助于我们对数据进行分组,用于后续分析

参数列表

数据:

>

pheatmap包的运用极为广泛,这里只介绍我常用的参数模型,仅供参考。

pheatmap包的安装

使用

常见报错

以上就是关于r语言绘制热图 怎么对矩阵进行赋值全部的内容,包括:r语言绘制热图 怎么对矩阵进行赋值、【R】热图绘制、R 数据可视化 —— 聚类热图 pheatmap等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10105479.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存