网站首页 > 技术文章 正文
导语 :在本系列前面的介绍中,小编给大家介绍过用于操作数据框的R包dplyr(R语言学习笔记(二)),本期给大家介绍一个用于画热图的包pheatmap。
01生成热图文件
在生物学领域,热图最常用的功能就是展示不同基因差异表达的情况,首先我们用上一期介绍的一些R基本函数模拟一个基因表达矩阵(R语言学习笔记(三))。
> # Create test file
> htest <- matrix(rnorm(200), 20, 10) #生成20*10的随机矩阵
> htest[1:10, 1:3] <- htest[1:10, 1:3] - 3 #手动给数据“分块”
> htest[11:20, 4:10] <- htest[11:20, 4:10] + 4
> colnames(htest) <- paste("Sample", 1:10, sep = "")
> rownames(htest) <- paste("Gene", 1:20, sep = "")
> View(htest)
这样就生成了一个20个基因在10个样品中的表达矩阵,并且通过手动操作,使右下角的数据明显比左上角大,形成一个大致的分层,后续我们就用这个文件画热图。
02heatmap
R中有一个基本的heatmap()函数,可用来绘制热图,我们不妨尝试一下:
> heatmap(htest)
不出意料的难看,通常R中自带的函数功能都相对简单,也很少带有美化效果。所以学好基本函数的前提下,成为一个“调包侠”应该是R语言进阶的第一步。下面看一下pheatmap包的效果吧。
03pheatmap
我们先不调试参数,直接用pheatmap画一个最简单的热图:
> #install.packages(pheatmap) #安装pheatmap
> library(pheatmap) #加载pheatmap
> pheatmap(htest)
没有对比就没有伤害,这个热图相比上面那张图颜值提升了好几个档次,并且能很清楚的看到右上角和左下角分成了两种不同的颜色,跟我们预设的数据是一致的。
下面说一下pheatmap中用的比较多的参数。
(1)scale
scale参数设置是否归一化处理,默认不进行归一化。设置scale = "row"是对行进行归一化,设置scale = "column"是对列进行归一化。
>pheatmap(htest, scale = "row")
(2)cluster_row/ cluster_col
这两个参数设置是否按行/列进行聚类,比如我们不需要聚类:
> pheatmap(htest, cluster_rows = F, cluster_cols = F)
(3)fontsize_row/ fontsize_col/angel_col
前两个参数设置文字大小,后面一个参数设置纵向文字角度。
> pheatmap(htest, fontsize_row = 12, fontsize_col = 18, angle_col = 45)
(4)添加注释
#生成注释文件
> annotation_row <- data.frame(
Genetype = sample(c("A", "B"), size = 20, replace = TRUE))
> annotation_col <- data.frame(
Gender = sample(c(rep("male", 5), rep("female", 5))))
> rownames(annotation_row) <- rownames(htest)
> rownames(annotation_col) <- colnames(htest)
#作图
>pheatmap(htest,
annotation_row = annotation_row,
annotation_col = annotation_col,
fontsize_row = 18, fontsize_col = 18, angle_col = 45)
04导出作图文件并作图
上面的热图基本已经达到文章发表的水平了,但有时候图片需要与其他的图片放在一起组图,小编自己的经验是将图片导出成PDF,方法是右下角文件栏【Export】→【Save as PDF】,调整合适的高度和宽度,最后导出PDF文件。
导出的PDF文件可以在AI或者PDF编辑器中进行编辑,修改字体类型和大小等等。关于AI和PDF编辑器的使用方法请参考小编之前的推送【科研论文作图系列-从PPT到AI (一)】和(【两款PDF编辑器带你玩转PDF文件】。最后,欢迎大家进入投必得R语言与统计交流群,与小编一起交流R语言的学习心得。
猜你喜欢
- 2024-12-06 大数据分析R语言RStudio使用教程
- 2024-12-06 R语言—从原始数据到单因素,到组间比较,简直保姆级教程
- 2024-12-06 把数据输入R语言后,如何进行简单的操作(二)
- 2024-12-06 R数据分析:Lasso回归筛选变量构建Cox模型并绘制列线图
- 2024-12-06 R语言从入门到精通:Day3
- 2024-12-06 R语言实战自学笔记-数据框1
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)