专栏首页yw的数据分析gplots heatmap.2和ggplot2 geom_tile实现数据聚类和热图plot

gplots heatmap.2和ggplot2 geom_tile实现数据聚类和热图plot

主要步骤

ggplot2

  • 数据处理成矩阵形式,给行名列名
  • hclust聚类,改变矩阵行列顺序为聚类后的顺序
  • melt数据,处理成ggplot2能够直接处理的数据结构,并加上列名
  • ggplot_tile进行画图

gplots

  • 数据处理成矩阵形式,给行名列名
  • 调制颜色并用heatmap.2画热图(heatmap.2函数内部用hclustfun 进行聚类)

R语言代码

library(ggplot2) 
library(data.table)
CN_DT <- fread("/home/ywliao/project/Gengyan/ONCOCNV_result/ONCOCNV_all_result.txt",sep="\t")
dt <- CN_DT[cfDNATime=="cfDNA1"]
wdt <- dcast(dt,Gene~Sample,value.var = "CN",fun.aggregate = mean)
data <- as.matrix(wdt[,2:length(wdt),with=F])  #数据矩阵
rownames(data) <- unlist(wdt[,1]) 

hc<-hclust(dist(data),method = "average") #对行进行聚类
rowInd<-hc$order #将聚类后行的顺序存为rowInd
hc<-hclust(dist(t(data)),method = "average")  #对矩阵进行转置,对原本的列进行聚类
colInd<-hc$order  #将聚类后列的顺序存为colInd
data<-data[rowInd,colInd] #将数据按照聚类结果重排行和列
dp=melt(data)    #对数据进行融合,适应ggplot的数据结构,以进行热图的绘制
colnames(dp) <- c("Gene","Sample","Value")
p <- ggplot(dp, aes(Sample,Gene)) + geom_tile(aes(fill = as.factor(Value)))+theme(axis.text.x=element_text(angle = 90))+ guides(fill = guide_legend(title = "Copy Number")) + scale_fill_brewer(palette = 3)
p
library(gplots)
library(data.table)
CN_DT <- fread("/home/ywliao/project/Gengyan/ONCOCNV_result/ONCOCNV_all_result.txt",sep="\t")
dt <- CN_DT[cfDNATime=="cfDNA1"]
wdt <- dcast(dt,Gene~Sample,value.var = "CN",fun.aggregate = mean)
dp <- as.matrix(wdt[,2:length(wdt),with=F])  #数据矩阵

labrow <- unlist(wdt[,1,with=F]) #行名
colorsChoice<- colorRampPalette(c("green","black","red"))  #调制颜色

heatmap.2(dp,labRow = labrow,col=colorsChoice(5),breaks = c(1,1.5,2,2.5,3,4),density.info="histogram",
          hclustfun = function(c)hclust(c,method="average"),keysize = 1.5, cexRow=0.5,trace = "none");

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 从一篇nature medicine文章的得到的可用于文献画图的19种16进制颜色码

    "3B99D4", "8ED14B", "F06B49","ECC2F1", "82C7C3", "19413E","1776EB", "F5B2AC", "5...

    用户1680321
  • ROCR包中ROC曲线计算是取大于cutoff还是大于等于cutoff

    可以看到先按从大到小排序,再累计当前位置和之前位置的阳性值。因此计算TP,TN等指标时,取的是大于等于cutoff

    用户1680321
  • grid包just参数如何just图形位置

      grid的画图函数都含有just,但是just参数的是怎么调节图形位置的总是让人非常费解,于是便写了代码来一探究竟。   思路非常简单:放一个2*2的布局...

    用户1680321
  • 爬取京东评论,且修改网址直接可复用哦(送代码)

    本次python实战,主要目标是利用 Python爬取京东商品评论数,如上图所示:爬取“Python之父”推荐的小蓝书,这些信息主要包括用户名、书名、评论等信息...

    测试开发社区
  • 数据库学习

    【不满足第一范式】:1.主键重复。2. StuInfo字段可以再分 |StuId(主键学号)| StuName (姓名)| StuIn...

    李郑
  • 一次由查询转换引起的性能问题的分析

    作者介绍 郭成日 云和恩墨北区技术工程师 专注于SQL审核和优化相关工作。曾经服务的客户涉及金融保险、电信运营商、政府、生产制造等行业。 在优化器进行查询转换...

    数据和云
  • 什么,没有服务器也能部署自己的博客?!

    我前几天写了一篇文章,如果你想搭建一个博客,其中提到了使用 netlify 做博客托管服务。

    山月
  • 大数据之脚踏实地学08--搭建Hadoop集群【2】

    在《大数据之脚踏实地学07--搭建Hadoop集群【1】》中,讲解的是虚拟机的配置(包括网络设置、主机名修改和克隆等),文中我们在VMware中虚拟了3台计算机...

    1480
  • 小窗播放视频的原理和实现(上)

    本文对小窗视频播放进行了详细的研究,针对几种实现方案进行了深入的对比分析,进而给出实现小窗视频播放的最优解。

    QQ音乐技术团队
  • Go语言基础1 - 代码风格和代码格式化

    格式化问题总是充满了争议,但却始终没有形成统一的定论。在Go中我们另辟蹊径,让机器来处理大部分的格式化问题。 gofmt 程序(也可用 go fmt,它以包为...

    zhangyunfeiVir

扫码关注云+社区

领取腾讯云代金券