作者简介

taoyan:R语言中文社区特约作家,伪码农,R语言爱好者,爱开源。

个人博客: https://ytlogos.github.io/

这节课是最后一节课,主要将如何绘制热图(heatmap)。实际上关于热图的绘制,我以前写了一篇博客:R语言学习笔记之热图绘制 ,里面写的十分详细。但是今天热图绘制主要利用一个新的R包ComplexHeatmap进行绘制。

包安装

source("https://bioconductor.org/biocLite.R")

options(BioC_mirror="http://mirrors.ustc.edu.cn/bioc/")

biocLite("ComplexHeatmap")

数据加载

library(ComplexHeatmap)

my_data <- read.table("copy_number_data.txt", sep = "\t", quote="", stringsAsFactors = FALSE, header = TRUE)

head(my_data[,1:6])

##    CHR     START       END X.SRR089523. X.SRR089526. X.SRR089529.

## 1 chr1  53440429  53494914    1.1002112    1.1000844    1.0487301

## 2 chr1 105459037 105514187    1.1860780    0.6553897    0.4980016

## 3 chr1 183998520 184048557    1.3791250    1.2024487    0.5735184

## 4 chr1 236135655 236186012    0.8987158    1.1182392    0.6396842

## 5 chr2  38944803  38996507    1.0788216    0.9663390    1.0473623

## 6 chr2  97248366  97298651    1.0459629    1.0658991    1.0473623

#绘制热图前先进行矩阵化

my_matrix <- as.matrix(my_data[, c(4:100)])

head(my_matrix[,1:4])

##      X.SRR089523. X.SRR089526. X.SRR089529. X.SRR089533.

## [1,]    1.1002112    1.1000844    1.0487301    0.5656784

## [2,]    1.1860780    0.6553897    0.4980016    0.5656784

## [3,]    1.3791250    1.2024487    0.5735184    1.0362551

## [4,]    0.8987158    1.1182392    0.6396842    0.4659238

## [5,]    1.0788216    0.9663390    1.0473623    1.1702930

## [6,]    1.0459629    1.0658991    1.0473623    1.2298119

#将染色体信息存储好以便后续热图注释

chromosome_info <- data.frame(chrom=my_data$CHR)

可视化

Heatmap(my_matrix)

   可以看到使用默认参数热图时十分不美观,可以进行部分调整

#坐标旋转

my_matrix <- t(my_matrix)

Heatmap(my_matrix)

坐标标签还是十分乱,还得进行调整

Heatmap(my_matrix, cluster_columns = FALSE)#列不聚类

将坐标标签位置置于左边

Heatmap(my_matrix,

cluster_columns = FALSE,

row_names_side = "left",

row_hclust_side = "left",

row_names_gp = gpar(cex=0.6)

)

Heatmap(my_matrix,

cluster_columns = FALSE,

row_names_side = "left",

row_hclust_side = "left",

row_names_gp = gpar(cex=0.6),

row_hclust_width = unit(3, "cm"))

热图绘制的时候可以使用不同的距离计算方式以及聚类方法,具体的用法可以参考我以前的文章:R语言学习笔记之热图绘制。

Heatmap(my_matrix,

cluster_columns = FALSE,

row_names_side = "left",

row_hclust_side = "left",

row_names_gp = gpar(cex=0.6),

row_hclust_width = unit(3, "cm"),

clustering_distance_rows = "maximum",

clustering_method_rows = "ward.D")

热图注释

主要是对聚成的类进行颜色标记

library(dendextend)

dend <- hclust(dist(my_matrix, method = "maximum"), method = "ward.D")

Heatmap(my_matrix,

cluster_columns = FALSE,

row_names_side = "left",

row_hclust_side = "left",

row_names_gp = gpar(cex=0.6),

row_hclust_width = unit(3, "cm"),

cluster_rows = color_branches(dend, k=3))

将热图分类

随便你先分成几类,但是一般来说有一个最佳分类数,可参考我的另一篇博客:R语言学习笔记之聚类分析

Heatmap(my_matrix,

cluster_columns = FALSE,

row_names_side = "left",

row_hclust_side = "left",

row_names_gp = gpar(cex=0.6),

row_hclust_width = unit(3, "cm"),

clustering_distance_rows = "maximum",

clustering_method_rows = "ward.D",

km=2)

根据染色体信息进行注释

chromosome_colors <- c(rep(c("black","white"),11), "red")

names(chromosome_colors) <- paste("chr",c(seq(1:22), "X"), sep = "")

Heatmap(my_matrix,

cluster_columns = FALSE,

row_names_side = "left",

row_hclust_side = "left",

row_names_gp = gpar(cex=0.6),

row_hclust_width = unit(3, "cm"),

clustering_distance_rows = "maximum",

clustering_method_rows = "ward.D",

km=2,

bottom_annotation = HeatmapAnnotation(chromosome_info, col = list(chrom=chromosome_colors), show_legend = FALSE))

 SessionInfo

sessionInfo()

## R version 3.4.3 (2017-11-30)

## Platform: x86_64-w64-mingw32/x64 (64-bit)

## Running under: Windows 10 x64 (build 16299)

##

## Matrix products: default

##

## locale:

## [1] LC_COLLATE=Chinese (Simplified)_China.936

## [2] LC_CTYPE=Chinese (Simplified)_China.936

## [3] LC_MONETARY=Chinese (Simplified)_China.936

## [4] LC_NUMERIC=C

## [5] LC_TIME=Chinese (Simplified)_China.936

##

## attached base packages:

## [1] grid      stats     graphics  grDevices utils     datasets  methods

## [8] base

##

## other attached packages:

## [1] dendextend_1.6.0      ComplexHeatmap_1.17.1

##

## loaded via a namespace (and not attached):

##  [1] Rcpp_0.12.15         DEoptimR_1.0-8       compiler_3.4.3

##  [4] pillar_1.1.0         RColorBrewer_1.1-2   plyr_1.8.4

##  [7] viridis_0.4.1        class_7.3-14         prabclus_2.2-6

## [10] tools_3.4.3          digest_0.6.15        mclust_5.4

## [13] viridisLite_0.3.0    evaluate_0.10.1      tibble_1.4.2

## [16] gtable_0.2.0         lattice_0.20-35      rlang_0.1.6

## [19] yaml_2.1.16          mvtnorm_1.0-7        gridExtra_2.3

## [22] trimcluster_0.1-2    stringr_1.2.0        knitr_1.19

## [25] cluster_2.0.6        GlobalOptions_0.0.12 fpc_2.1-11

## [28] diptest_0.75-7       nnet_7.3-12          stats4_3.4.3

## [31] rprojroot_1.3-2      robustbase_0.92-8    GetoptLong_0.1.6

## [34] flexmix_2.3-14       rmarkdown_1.8        kernlab_0.9-25

## [37] ggplot2_2.2.1.9000   magrittr_1.5         whisker_0.3-2

## [40] modeltools_0.2-21    backports_1.1.2      scales_0.5.0.9000

## [43] htmltools_0.3.6      MASS_7.3-48          shape_1.4.3

## [46] circlize_0.4.3       colorspace_1.3-2     stringi_1.1.6

## [49] lazyeval_0.2.1       munsell_0.4.3        rjson_0.2.15

往期文章

R语言可视化学习笔记之相关矩阵可视化包ggcorrplot

R语言学习笔记之相关性矩阵分析及其可视化

ggplot2学习笔记系列之利用ggplot2绘制误差棒及显著性标记

ggplot2学习笔记系列之主题(theme)设置

用circlize包绘制circos-plot

利用gganimate可视化R-Ladies发展情况

一篇关于国旗与奥运会奖牌的可视化笔记

利用ggseqlogo绘制seqlogo图

R语言data manipulation学习笔记之创建变量、重命名、数据融合

R语言data manipulation学习笔记之subset data

R语言可视化学习笔记之gganimate包

创建属于自己的调色板

Lesson 01 for Plotting in R for Biologists

Lesson 02&03 for Plotting in R for Biologists

Lesson 04 for Plotting in R for Biologists

Lesson 05 for Plotting in R for Biologists

Lesson 06 for Plotting in R for Biologists

Lesson 07 for Plotting in R for Biologists

R语言学习笔记之热图绘制

公众号后台回复关键字即可学习

回复 爬虫            爬虫三大案例实战  
回复 Python       1小时破冰入门

回复 数据挖掘     R语言入门及数据挖掘
回复 人工智能     三个月入门人工智能
回复 数据分析师  数据分析师成长之路 
回复 机器学习      机器学习的商业应用
回复 数据科学      数据科学实战
回复 常用算法      常用数据挖掘算法

Lesson 08 for Plotting in R for Biologists相关推荐

  1. 备份恢复Lesson 08. Using RMAN-Encrypted Backups

    备份恢复Lesson 08. Using RMAN-Encrypted Backups 1. 什么是透明加密.口令加密和双模式加密? 8-5 2. 请给出对 RMAN 启用 TDE 的步骤? 8-6 ...

  2. 数据分析-R语言资料整理

    独家分享--48页PPT解密数据可视化! Excel图表快捷操作小技巧 基于随机森林的分类与回归 R语言制作网页 ggplot2:可视化设计师的神器,了解一下 [译]R包介绍:Online Rando ...

  3. 精心整理 | R语言中文社区历史文章整理(类型篇)

    2018年过去一半了~又到了盘点的时间~感谢长时间来各位好友的关注,我们的成长与你们的爱护是分不开的.更感谢各位老师的投稿,支撑起了我们的这个社区,让更多R语言的爱好者和从业者获得最棒的知识!本文选取 ...

  4. [小北De编程手记] : Lesson 02 - Selenium For C# 之 核心对象

    从这一篇开始,开始正式的介绍Selenium 以及相关的组件,本文的将讨论如下问题: Selenium基本的概念以及在企业化测试框架中的位置 Selenium核心对象(浏览器驱动) Web Drive ...

  5. 为什么要是用R语言?

    关于R语言的优劣势详细了解: 大数据之R语言速成与实战 为什么选择R? 丰富的资源:涵盖了多种行业数据分析中几乎所有的方法. 良好的扩展性:十分方便得编写函数和程序包,跨平台,可以胜任复杂的数据分析. ...

  6. R语言-散布图—plot的函数使用

    plot()的使用 注意:用到的数据(自行下载): 首先,这个就是先help一下,这是新手必须要学会的 会产生一以下代码帮助: | Generic X-Y Plotting Description G ...

  7. 大学计算机基础知识点_阿里云大学和腾讯云大学的计算机基础课程

    再怎么强调生物信息学数据分析学习过程的计算机基础知识的打磨都不为过,我把它粗略的分成基于R语言的统计可视化,以及基于Linux的NGS数据处理: <生信分析人员如何系统入门R(2019更新版)& ...

  8. 如何用ggplot2绘制漂亮的统计图形

    导言 ggplot2 是由 Hadley Wickham 开发的一个功能十分强大的 R 语言绘图程序包,它能够非常轻松的画出各种好看的统计图形.关于 ggplot2 的教程有很多,Cédric Sch ...

  9. CorelDRAW快捷键搜集

    02. 将CorelDRAW中的标准工具列除去,标准工具列比鸡肋还无味,除去可增大可视面积. 03. CorelDARW 9 的段落文字并非不能转成曲线,方法并不止一种,可到Google搜索相关方法. ...

  10. python爬虫入门教程--快速理解HTTP协议(一)

    http协议是互联网里面最重要,最基础的协议之一,我们的爬虫需要经常和http协议打交道.下面这篇文章主要给大家介绍了关于python爬虫入门之快速理解HTTP协议的相关资料,文中介绍的非常详细,需要 ...

最新文章

  1. [USACO11NOV]牛的障碍Cow Steeplechase(匈牙利算法)
  2. 你根本想象不到,学霸到底经历过什么
  3. A - 还是畅通工程(最小生成树)
  4. java 停止定时器_实例助解java定时器设置及停止的方法
  5. masscan常用命令
  6. python主函数的作用_Python中的main函数解析
  7. ArcGIS API for JavaScript三维管网之三维模型制作(无插件)
  8. win7系统下使用虚拟机安装专利电子申请客户端(CPC软件)以及专利文件生成过程
  9. hadoop fs,hadoop dfs以及hdfs dfs区别
  10. 测试同学反馈,java 程序内存泄露,症状是RSS不断增加超过了jvm的xmx
  11. GitHub 上100个优质前端项目整理,非常全面!
  12. 让人又爱又恨的C语言!
  13. eclipse安装nodejs插件nodeclipse
  14. 直接激光雷达里程计:基于稠密点云的快速定位
  15. php如何动态为input赋值,input动态赋值后怎么触发change事件
  16. Java题目详解——LeetCode20.有效的括号
  17. 英语和汉语语法方面的区别(语言类型学)
  18. 阵列卡直通模式和raid模式_DNF:希洛克Raid攻略,一不小心就被全屏秒杀
  19. Redis 分布式事务实现
  20. 鸿蒙os第四次培训(菜单 页面跳转)

热门文章

  1. js字符串与数字比较大小
  2. modal 弹出层后禁止底层滚动
  3. 鸿蒙 HarmonyOS 3.0,终于来了!
  4. IDEA 的这款插件真是逆天了,代码那都不是事!
  5. 死磕单点登录的实现原理....
  6. IntelliJ IDEA 的项目配置和Web部署,终于搞懂了!
  7. 普通程序员如何向人工智能方向转型?
  8. 开源巨献:Google最热门60款开源项目
  9. 给创业者们推荐一个好的工具
  10. Git钩子:自定义你的工作流