上一期”【R语言】——聚类热图绘制(pheatmap)“介绍了R语言pheatmap包绘制聚类热图的基础代码,本期介绍当需要同时在热图上显示分组情况时,可利用pheatmap包构建分组信息,从而以不同的颜色等方式来展现分组情况。

1 数据准备

数据输入格式(csv格式):

2 R包加载及数据导入

#下载包#install.packages("pheatmap")install.packages("RColorBrewer")#加载包#library("pheatmap")library("RColorBrewer")#加载绘图数据#data<-read.table(file='C:/Rdata/jc/pheatmap.csv',header=TRUE,row.names= 1,sep=',')head(data) #查看数据

#data=log2(data[,1:6]+1) #对基因表达量数据处理#data <- as.matrix(data) #转变为matrix格式矩阵#head(data)

3 分组热图的绘制

首先需要对分组对象进行注释,随后使用“annotation_row”、“annotation_col”、“annotation_colors”、“annotation_legend”、“annotation_names_row”和“annotation_names_col”分别对行和列进行注释、行和列注释的颜色、图例信息注释显示、行和列注释的名称显示

3.1 简单分组

3.1.1 列信息注释及热图绘制

ann_col = data.frame(Sample=factor(c(rep("control.1",1),rep("control.2",1),rep("control.3",1),rep("test.1",1),rep("test.2",1),rep("test.3",1))))#创建分组列row.names(ann_col) = colnames(data) #这一行必须有,否则会报错:Error in check.length("fill") :  'gpar' element 'fill' must not be length 0ann_color = list(Sample = c(control.1="#0089CF", control.2="#0081A1", control.3="#007360",test.1="#E889BD", test.2="#B286D7", test.3="#5189E0")) #定义分组颜色

pheatmap(data, scale = "row", #表示进行均一化的方向,值为 “row”, “column” 或者"none"cluster_rows = T,cluster_cols = T, #cluster_rows表示仅对行聚类,cluster_cols表示仅对列聚类,值为TRUE或FALSEcutree_rows = NA, cutree_cols = NA, #若进行了行/列聚类,根据行/列聚类数量分隔热图行,cutree_rows=num分割行,cutree_cols=num分割列treeheight_row = 30, treeheight_col = 30, #若行、列聚类树高度调整border_color = "grey60", #表示热图每个小的单元格边框的颜色,默认为 "grey60"cellwidth = 60, cellheight = 7.5,  #表示单个单元格的宽度\高度,默认为 “NA”display_numbers = F, #表示是否在单元格上显示原始数值或按照特殊条件进行区分标记fontsize_number = 6, #表示热图上显示数字的字体大小number_format = "%.2f", #表示热图单元格上显示的数据格式,“%.2f” 表示两位小数,“%.1e”表示科学计数法number_color = "grey30", #表示热图单元格上显示的数据字体颜色fontsize =10, fontsize_row = 6, fontsize_col = 10, #热图中字体大小、行、列名字体大小show_rownames = T, show_colnames = T, #表示是否显示行名、列名main = "Gene标题", #表示热图的标题名字color = colorRampPalette(c("navy","white","firebrick3"))(100), #表示热图颜色,(100)表示100个等级angle_col = "45", #表示列标签的角度gaps_row = NULL,  #仅在未进行行聚类时使用,表示在行方向上热图的隔断位置gaps_col = c(1,2,3,4,5,6),  #仅在未进行列聚类时使用,表示在列方向上热图的隔断位置annotation_row = NA, annotation_col = ann_col, #表示是否对行、列进行注释,默认NAannotation = NA, annotation_colors = ann_color,  #表示行注释及列注释的颜色,默认NAannotation_legend = TRUE, #表示是否显示注释的图例信息annotation_names_row = TRUE, annotation_names_col = TRUE) #表示是否显示行、列注释的名称

图1 行分组后热图

3.1.2 行信息注释和热图绘制

#行和列注释ann_col = data.frame(Sample=factor(c(rep("control",3),rep("test",3))))#创建分组列ann_row = data.frame(pathway=factor(c(rep("pathway1",25),rep("pathway2",15),rep("pathway3",10))))#创建分组行row.names(ann_col) = colnames(data) #这一行必须有,否则会报错:Error in check.length("fill") :  'gpar' element 'fill' must not be length 0row.names(ann_row) = rownames(data)ann_color = list(Sample = c(control="#0089CF", test="#E889BD")) #定义分组颜色
#热图绘制pheatmap(data, scale = "row", #表示进行均一化的方向,值为 “row”, “column” 或者"none"cluster_rows = T,cluster_cols = T, #cluster_rows表示仅对行聚类,cluster_cols表示仅对列聚类,值为TRUE或FALSEcutree_rows = NA, cutree_cols = NA, #若进行了行/列聚类,根据行/列聚类数量分隔热图行,cutree_rows=num分割行,cutree_cols=num分割列treeheight_row = 30, treeheight_col = 30, #若行、列聚类树高度调整border_color = "grey60", #表示热图每个小的单元格边框的颜色,默认为 "grey60"cellwidth = 60, cellheight = 7.5,  #表示单个单元格的宽度\高度,默认为 “NA”display_numbers = F, #表示是否在单元格上显示原始数值或按照特殊条件进行区分标记fontsize_number = 6, #表示热图上显示数字的字体大小number_format = "%.2f", #表示热图单元格上显示的数据格式,“%.2f” 表示两位小数,“%.1e”表示科学计数法number_color = "grey30", #表示热图单元格上显示的数据字体颜色fontsize =10, fontsize_row = 6, fontsize_col = 10, #热图中字体大小、行、列名字体大小show_rownames = T, show_colnames = T, #表示是否显示行名、列名main = "Gene标题", #表示热图的标题名字color = colorRampPalette(c("navy","white","firebrick3"))(100), #表示热图颜色,(100)表示100个等级angle_col = "45", #表示列标签的角度gaps_row = NULL,  #仅在未进行行聚类时使用,表示在行方向上热图的隔断位置gaps_col = c(1,2,3,4,5,6),  #仅在未进行列聚类时使用,表示在列方向上热图的隔断位置annotation_row = ann_row, annotation_col = ann_col, #表示是否对行、列进行注释,默认NAannotation = NA, annotation_colors = ann_color,  #表示行注释及列注释的颜色,默认NAannotation_legend = TRUE, #表示是否显示注释的图例信息annotation_names_row = TRUE, annotation_names_col = TRUE) #表示是否显示行、列注释的名称

图2 行和列注释的热图

3.2 多条件分组

#多条件分组行和列注释ann_col = data.frame(Sample=c(rep("control",3),rep("test",3)), Stage = c(rep("Stage1",1), rep("Stage2",2), rep("Stage3", 3)), time = c(rep("(March",2),rep("July",2),rep("December",2)))#创建分组列ann_row = data.frame(pathway=c(rep("pathway1",25),rep("pathway2",15),rep("pathway3",10)),Biological_process = c(rep("process1",20), rep("process2", 10),rep("process3", 5),rep("process4", 5),rep("process5", 10) ))#创建分组行row.names(ann_col) = colnames(data) #这一行必须有,否则会报错:Error in check.length("fill") :  'gpar' element 'fill' must not be length 0row.names(ann_row) = rownames(data)ann_color = list(Sample = c(control="#0089CF", test="#E889BD"),Stage=c(Stage1="#FFFFCC",Stage2="#CCFFFF",Stage3="#CCCCFF"),Sex = c(March = "orange", July = "purple", December = "yellow")) #定义分组颜色#热图绘制pheatmap(data, scale = "row", #表示进行均一化的方向,值为 “row”, “column” 或者"none"cluster_rows = T,cluster_cols = T, #cluster_rows表示仅对行聚类,cluster_cols表示仅对列聚类,值为TRUE或FALSEcutree_rows = NA, cutree_cols = NA, #若进行了行/列聚类,根据行/列聚类数量分隔热图行,cutree_rows=num分割行,cutree_cols=num分割列treeheight_row = 30, treeheight_col = 30, #若行、列聚类树高度调整border_color = "grey60", #表示热图每个小的单元格边框的颜色,默认为 "grey60"cellwidth = 60, cellheight = 7.5,  #表示单个单元格的宽度\高度,默认为 “NA”display_numbers = F, #表示是否在单元格上显示原始数值或按照特殊条件进行区分标记fontsize_number = 6, #表示热图上显示数字的字体大小number_format = "%.2f", #表示热图单元格上显示的数据格式,“%.2f” 表示两位小数,“%.1e”表示科学计数法number_color = "grey30", #表示热图单元格上显示的数据字体颜色fontsize =10, fontsize_row = 6, fontsize_col = 10, #热图中字体大小、行、列名字体大小show_rownames = T, show_colnames = T, #表示是否显示行名、列名main = "Gene标题", #表示热图的标题名字color = colorRampPalette(c("navy","white","firebrick3"))(100), #表示热图颜色,(100)表示100个等级angle_col = "45", #表示列标签的角度gaps_row = NULL,  #仅在未进行行聚类时使用,表示在行方向上热图的隔断位置gaps_col = c(1,2,3,4,5,6),  #仅在未进行列聚类时使用,表示在列方向上热图的隔断位置annotation_row = ann_row, annotation_col = ann_col, #表示是否对行、列进行注释,默认NAannotation = NA, annotation_colors = ann_color,  #表示行注释及列注释的颜色,默认NAannotation_legend = TRUE, #表示是否显示注释的图例信息annotation_names_row = TRUE, annotation_names_col = TRUE) #表示是否显示行、列注释的名称

图3 多条件分组注释的热图

好了本次分享就到这里,下一期将分享根据聚类情况绘制热图的分组。

扫码关注公众号,私聊获得完整代码和演示数据包,以及其他精彩内容

【R语言】——聚类热图行列分组信息注释热图2相关推荐

  1. 热图pheatmap 热图3:热图行列分组信息注释

    热图pheatmap library(pheatmap) getwd() setwd("D:\Win10 System\Documents\WeChat Files\wxid_f27yna0 ...

  2. 热图3:热图行列分组信息注释

    这次我们要让热图更加复杂化. 实际上,有些情况下做热图可能只需要标注对照组.实验组即可.但是大多时候,可以在热图上体现更多信息,比如,除了分组,还有不同得处理.年龄.性别.疾病阶段等等,以及不同功能基 ...

  3. R语言绘制热图实践(一)pheatmap包

    目录 前言 pheatmap包 pheatmap简介 常用参数介绍 使用 安装 绘制样本间相关系数图(简单使用) 差异表达基因热图(进阶使用) 如何查看pheatmap的聚类结果 pheatmap总结 ...

  4. R语言绘制热图(其实是相关系数图)实践(二)corrplot包

    目录 前言 corrplot包简介 语法和常用参数介绍 函数语法 参数介绍 实践 summary 参考资料 前言 在我的上一篇的内容中(R语言绘制热图实践(一)pheatmap包 ),我以绘制相关系数 ...

  5. R语言使用ggplot2包使用geom_density()函数绘制密度图(自定义颜色填充、线条色彩、分组、均值线)实战(density plot)

    R语言使用ggplot2包使用geom_density()函数绘制密度图(自定义颜色填充.线条色彩.分组.均值线)实战(density plot) 目录 R语言使用ggplot2包使用geom_den ...

  6. R语言ggplot2可视化:可视化分组的小提琴图(violin plot)并在分组小提琴内部嵌入箱图(box plot)

    R语言ggplot2可视化:可视化分组的小提琴图(violin plot)并在分组小提琴内部嵌入箱图(box plot) 目录

  7. R语言使用compareGroups包绘制分组患者基线信息表实战:基于survival包lung数据集

    R语言使用compareGroups包绘制分组患者基线信息表实战:基于survival包lung数据集 目录 R语言使

  8. R语言使用lm函数构建分组线性回归模型、构建具有交互项的线性回归模型、使用coef函数获取模型系数及截距信息

    ↵ R语言使用lm函数构建分组线性回归模型.构建具有交互项的线性回归模型.使用coef函数获取模型系数及截距信息 目录

  9. R语言绘图—热图绘制

    R语言绘图-热图绘制 原创 R语言与医学生  2022-06-24 20:59 发表于广东 热图使用颜色来表示二维图中第三个变量的变化和大小.热图能清楚直观的看到数据的变化.今天就简单介绍下R语言中热 ...

最新文章

  1. Datawhale来杭电啦!
  2. Linux下解决“shutdown: command not found“问题
  3. 思科isis路由的优先级_何谓“路由” ,带你了解路由的本质,轻松配置路由简单排除故障...
  4. 使用vSphere Host Update Utility 4.0升级ESX 3到4.0版本
  5. mybatis if test 用法_SpringBoot整合Mybatis-Plus 实战之动态SQL,Mybatis拿得出手的功能之一...
  6. 写出float x 与“零值”比较的if语句
  7. nginx upstream setting
  8. HTML 文档流和文本流的理解
  9. spring-boot项目打war包并部署到本地的tomcat容器
  10. jQuery的hide() 、show() 、toggle()
  11. jQuery实现的简单文字提示效果模拟title
  12. java 内部类调用_Java内部类使用总结
  13. mysql数据库过滤数据_MySQL数据库常规操作一些简单绕过过滤的方法
  14. [LeetCode] Reverse Linked List 倒置链表
  15. merge()函数--R语言
  16. Spring Boot实战笔记(四)-- Spring常用配置(事件Application Event)
  17. 计算机学报2020.1-2022.5感兴趣论文简单通览笔记
  18. 深度模型训练之learning rate
  19. python search返回值_python正则表达式--match search方法
  20. clion:输出中文乱码终极解决方案

热门文章

  1. 比较两个实型数据是否相等
  2. 理工科的人写文章也是非常好的
  3. Java中的二维数组和递归
  4. 舞伴问题 队列 数据结构
  5. 用Hexo+github搭建个人博客
  6. nvm 管理node版本切换、安装、查看
  7. Internet Explorer v7.0.5730.13 最新免激活版下载!!
  8. uniapp实现横向滚动样式条
  9. phpcms 怎么修改index.php,PHPCMS 修改后台登录地址
  10. 拜耳健康消费品中国研发中心在江苏启东开幕