利用R语言heatmap.2函数进行聚类并画热图

数据聚类然后展示聚类热图是生物信息中组学数据分析的常用方法,在R语言中有很多函数可以实现,譬如heatmap,kmeans等,除此外还有一个用得比较多的就是heatmap.2。最近在网上看到一个笔记文章关于《一步一步学heatmap.2函数》,在此与大家分享。由于原作者不详,暂未标记来源,请原作者前来认领哦,O(∩_∩)O哈哈~

数据如下:

  
  1. library(gplots)
  2. data(mtcars)
  3. x <- as.matrix(mtcars)
  4. rc <- rainbow(nrow(x), start=0, end=.3)
  5. cc <- rainbow(ncol(x), start=0, end=.3)

利用R语言heatmap.2函数进行聚类并画热图-图片1

X就是一个矩阵,里面是我们需要画热图的数据。

Rc是一个调色板,有32个颜色,渐进的

Cc也是一个调色板,有11个颜色,也是渐进的

首先画一个默认的图:

  
  1. heatmap.2(x)

利用R语言heatmap.2函数进行聚类并画热图-图片2

然后可以把聚类数可以去掉:就是控制这个dendrogram参数

  
  1. heatmap.2(x, dendrogram=“none”)

利用R语言heatmap.2函数进行聚类并画热图-图片3

然后我们控制一下聚类树

  
  1. heatmap.2(x, dendrogram=“row”) # 只显示行向量的聚类情况
  2. heatmap.2(x, dendrogram=“col”) #只显示列向量的聚类情况

 

下面还是在调控聚类树,但是我没看懂跟上面的参数有啥子区别!

  
  1. heatmap.2(x, keysize=2) ## default - dendrogram plotted and reordering done.
  2. heatmap.2(x, Rowv=FALSE, dendrogram=“both”) ## generate warning!
  3. heatmap.2(x, Rowv=NULL, dendrogram=“both”) ## generate warning!
  4. heatmap.2(x, Colv=FALSE, dendrogram=“both”) ## generate warning!

接下来我们可以调控行列向量的label的字体大小方向

首先我们调控列向量,也就是x轴的label

  
  1. heatmap.2(x, srtCol=NULL)
  2. heatmap.2(x, srtCol=0, adjCol = c(0.5,1) )
  3. heatmap.2(x, srtCol=45, adjCol = c(1,1) )
  4. heatmap.2(x, srtCol=135, adjCol = c(1,0) )
  5. heatmap.2(x, srtCol=180, adjCol = c(0.5,0) )
  6. heatmap.2(x, srtCol=225, adjCol = c(0,0) ) ## not very useful
  7. heatmap.2(x, srtCol=270, adjCol = c(0,0.5) )
  8. heatmap.2(x, srtCol=315, adjCol = c(0,1) )
  9. heatmap.2(x, srtCol=360, adjCol = c(0.5,1) )

利用R语言heatmap.2函数进行聚类并画热图-图片4

然后我们调控一下行向量,也就是y轴的label

  
  1. heatmap.2(x, srtRow=45, adjRow=c(0, 1) )
  2. heatmap.2(x, srtRow=45, adjRow=c(0, 1), srtCol=45, adjCol=c(1,1) )
  3. heatmap.2(x, srtRow=45, adjRow=c(0, 1), srtCol=270, adjCol=c(0,0.5) )

利用R语言heatmap.2函数进行聚类并画热图-图片5

设置 offsetRow/offsetCol 可以把label跟热图隔开!

  
  1. ## Show effect of offsetRow/offsetCol (only works when srtRow/srtCol is
  2. ## not also present) heatmap.2(x, offsetRow=0, offsetCol=0)
  3. heatmap.2(x, offsetRow=1, offsetCol=1)
  4. heatmap.2(x, offsetRow=2, offsetCol=2)
  5. heatmap.2(x, offsetRow=-1, offsetCol=-1)
  6. heatmap.2(x, srtRow=0, srtCol=90, offsetRow=0, offsetCol=0)
  7. heatmap.2(x, srtRow=0, srtCol=90, offsetRow=1, offsetCol=1)
  8. heatmap.2(x, srtRow=0, srtCol=90, offsetRow=2, offsetCol=2)
  9. heatmap.2(x, srtRow=0, srtCol=90, offsetRow=-1, offsetCol=-1)

利用R语言heatmap.2函数进行聚类并画热图-图片6

  
  1. ## Show effect of z-score scaling within columns, blue-red color scale
  2. hv <- heatmap.2(x, col=bluered, scale=“column”, tracecol=“#303030”)

hv是一个热图对象!!!

  
  1. > names(hv) # 可以看到hv对象里面有很多子对象
  2. > “rowInd” “colInd” “call” “colMeans” “colSDs” “carpet” “rowDendrogram” “colDendrogram” “breaks” “col” “vline” “colorTable” ## Show the mapping of z-score values to color bins hvKaTeX parse error: Expected 'EOF', got '#' at position 638: …an class="com">#̲# Extract the r…colorTable[hvKaTeX parse error: Expected 'EOF', got '#' at position 124: …n class="str">"#̲FFFFFF"</span><…colorTable[hvKaTeX parse error: Expected 'EOF', got '#' at position 124: …n class="str">"#̲FFFFFF"</span><…colSDs + hv c o l M e a n s < / s p a n > < s p a n c l a s s = " p u n " > , < / s p a n > < s p a n c l a s s = " p l n " > w h i t e B i n < / s p a n > < s p a n c l a s s = " p u n " > [ < / s p a n > < s p a n c l a s s = " l i t " > 2 < / s p a n > < s p a n c l a s s = " p u n " > ] < / s p a n > < s p a n c l a s s = " p l n " > < / s p a n > < s p a n c l a s s = " p u n " > ∗ < / s p a n > < s p a n c l a s s = " p l n " > h v colMeans</span><span class="pun">,</span><span class="pln"> whiteBin</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> hv colMeans</span><spanclass="pun">,</span><spanclass="pln">whiteBin</span><spanclass="pun">[</span><spanclass="lit">2</span><spanclass="pun">]</span><spanclass="pln"></span><spanclass="pun"></span><spanclass="pln">hvcolSDs + hvKaTeX parse error: Expected 'EOF', got '#' at position 1148: …n class="str">"#̲303030"</span><…Type)],
  3. xlab=‘CellLines’,
  4. ylab=‘Probes’,
  5. main=Cluster_Method[i],
  6. col=greenred(64))
  7. dev.off()
  8. }

 

这样就可以一下子把七种cluster的方法依次用到heatmap上面来。而且通过对cluster树的比较,我们可以从中挑选出最好、最稳定到cluster方法,为后续分析打好基础!

 

对下面这个数据聚类:

利用R语言heatmap.2函数进行聚类并画热图-图片12

  
  1. require(graphics)
  2. hc <- hclust(dist(USArrests), “ave”)
  3. plot(hc)

利用R语言heatmap.2函数进行聚类并画热图-图片13

首先对一个数据框用dist函数处理得到一个dist对象!

利用R语言heatmap.2函数进行聚类并画热图-图片14

Dist对象比较特殊,专门为hclust函数来画聚类树的!

利用R语言heatmap.2函数进行聚类并画热图-图片15

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/257135.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[RK-Linux] 移植Linux-5.10到RK3399(四)| 检查HDMI配置与打开内核LOGO显示

文章目录 一、HDMI二、VOP三、显示内核LOGO一、HDMI RK3399 的 HDMI 接口如图: datasheet 介绍: HDMI 接口各个引脚的作用如下: 接口标签作用HDMI_TX0P HDMI_TX0PA差分信号线,用于传输 HDMI 通道 0 的正向数据HDMI_TX0N HDMI_TX0NA

算法___

文章目录 算法两数之和 算法 两数之和 题目如下图&#xff1a; 我的答案如下图&#xff1a; 我采用的是最笨的思路&#xff0c;直接暴力的两次循环&#xff0c;第一次外循环是取数组的第一个元素&#xff0c;然后内循环会遍历数组后面除第一个的所有元素&#xff0c;然后和…

Python-Opencv图像处理的小坑

1.背景 最近在做一点图像处理的事情&#xff0c;在做处理时的cv2遇到一些小坑&#xff0c;希望大家遇到的相关的问题可以注意&#xff01;&#xff01; 2. cv2.imwrite保存图像 cv2.imwrite(filename, img, [params]) filename&#xff1a;需要写入的文件名&#xff0c;包括路…

代码随想录算法训练营 ---第五十八天

今天开启单调栈的征程。 第一题&#xff1a; 简介&#xff1a; 本题有两种解法&#xff0c;第一种&#xff1a;暴力破解 两层for循环 时间复杂度为O(n^2) 超时了 第二种&#xff1a;单调栈解法也是今天的主角。 单调栈是什么&#xff1f; 单调递增栈&#xff1a;单调递增栈…

计算机操作系统4

1.什么是进程同步 2.什么是进程互斥 3.进程互斥的实现方法(软件) 4.进程互斥的实现方法(硬件) 5.遵循原则 6.总结&#xff1a; 线程是一个基本的cpu执行单元&#xff0c;也是程序执行流的最小单位。 调度算法&#xff1a;先来先服务FCFS、短作业优先、高响应比优先、时间片…

大数据项目——基于Django/协同过滤算法的房源可视化分析推荐系统的设计与实现

大数据项目——基于Django/协同过滤算法的房源可视化分析推荐系统的设计与实现 技术栈&#xff1a;大数据爬虫/机器学习学习算法/数据分析与挖掘/大数据可视化/Django框架/Mysql数据库 本项目基于 Django框架开发的房屋可视化分析推荐系统。这个系统结合了大数据爬虫、机器学…

第七次作业

1&#xff0c; 给定一个包含n1个整数的数组nums&#xff0c;其数字在1到n之间&#xff08;包含1和n)&#xff0c;可知至少存在一个重复的整数&#xff0c;假设只有一个重复的整数&#xff0c;请找出这个重复的数 arr input("") num [int(n) for n in arr.split()]…

网络安全(五)--Linux 入侵检测分析技术

8. Linux 入侵检测分析技术 目标 了解入侵检测分析的基本方法掌握查看登录失败用户的方法掌握查阅历史命令的方法掌握检查系统开机自启服务的方法 8.1. 概述 最好的安全防护当然是“域敌于国门之外”&#xff0c; 通过安全防护技术&#xff0c;来保证当前主机不被非授权人员…

【计算机网络笔记】物理层——频带传输基础

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

Java基础50题:14. 使用方法求最大值(2种方法)

概述 使用方法求最大值。 创建方法求两个数的最大值max2&#xff0c;随后再写一个求3个数的最大值函数max3。 要求&#xff1a; 在max3这个方法中&#xff0c;调用max2函数&#xff0c;来实现3个数的最大值计算。 方法一 【代码】 public class P14 {public static int max…

Linux 文件写入报错E297: Write error in swap file

错误原因 Linux系统不能向文件写入内容&#xff0c;无论写入都无保存&#xff0c;并且提示下文信息 E297: Write error in swap file "abc.txt" [New File] Press ENTER or type command to continue 经过查找资料得知可能是磁盘满了。通过df -h命令查看磁盘情况…

DDD架构思想专栏二《领域层的决策设计思想详解》

如果不了解DDD基本概念的读者可以去看这篇文章&#xff0c;传送门&#xff1a;DDD架构思想专栏一《初识领域驱动设计DDD落地》-CSDN博客 前言介绍 在上一章节介绍了领域驱动设计的基本概念以及按照领域驱动设计的思想进行代码分层&#xff0c;但是仅仅只是从一个简单的分层结…