r语言导入ggplot2_R语言学习指南(5) ggplot2绘制终极版热图

本文介绍了如何使用r语言的ggplot2库绘制热图,包括数据标准化、melt()函数转换宽表、绘制样本分组信息条、基因类型条以及聚类树。还提到了aplot包的拼图功能,并预告了相关性热图的讲解。
摘要由CSDN通过智能技术生成

由于热图的需求实在是太过于旺盛,这一节我们先来展示如何通过ggplot2绘制热图,各位看官老爷们,细细品味

热图绘制

pacman::p_load(tidyverse,reshape2,aplot,ggtree)

heatmap % scale(center = F) %>% 
  as.data.frame() %>% 
  mutate(mtxars=row.names(.)) %>% melt() %>%
  ggplot(aes(variable,mtxars,fill=value))+
  geom_tile()+theme_minimal()+
  theme(axis.text.x =element_text(angle =90,hjust =0.5,vjust = 0.5))+
  scale_fill_viridis_c()+scale_y_discrete(position="right")+
  xlab(NULL) + ylab(NULL)
heatmap

scale函数对数据进行标准化时会同时进行标准化中心化,设置center = F,则不进行中心化, 标准化后数据类型则变为矩阵与数组,通过as.data.frame()将其转化为数据框,mutate添加行名,reshape2包提供melt函数将宽表转为长表ce3be3041e1ef1d58efe46e842448915.png

melt()转换宽表为长表

library(ggpubr)
library(patchwork) 
p1 % scale(center = F) %>% 
  as.data.frame() %>% 
  mutate(mtxars=row.names(.)) %>% 
  select(qsec:mtxars) %>% head() %>%
  ggtexttable(rows = NULL,theme = ttheme("mBlue"))

p2 % scale(center = F) %>% 
  as.data.frame() %>% 
  mutate(mtxars=row.names(.)) %>% 
  select(qsec:mtxars) %>% head() %>% melt() %>% head() %>%
  ggtexttable(rows = NULL,theme = ttheme("mBlue"))
  
p1/p2
6cc48e52b5f1ded93a85f0cc776dcd6e.png

绘制样本分组信息条

group % as.data.frame() %>% 
  mutate(group=rep(LETTERS[1:2],times=c(6, 5))) %>%
  mutate(p="group") %>%
  ggplot(aes(.,y=p,fill=group))+
  geom_tile() + 
  scale_y_discrete(position="right") +
  theme_minimal()+xlab(NULL) + ylab(NULL) +
  theme(axis.text.x = element_blank())+
  labs(fill = "Group")

注:此处的分组信息为随意构建的,实际应用时读入具体分组文件即可

绘制基因类型条

type % as.data.frame() %>%
  mutate(group=rep(c("gene1","gene2","gene3"),
                   times=c(10,12,10))) %>%
  mutate(p="genetype") %>%
  ggplot(aes(p,.,fill=group))+
  geom_tile() + 
  scale_y_discrete(position="right") +
  theme_minimal()+xlab(NULL) + ylab(NULL) +
  theme(axis.text.y = element_blank(),
        axis.text.x =element_text(
          angle =90,hjust =0.5,vjust = 0.5))+
  labs(fill = "Type")
绘制聚类树
p % scale(center = F) %>% as.data.frame()

phr % 
  ggtree(layout="rectangular",branch.length="none")

phc % 
  ggtree() + layout_dendrogram()

注:由于热图为标准化后的数据绘制,因此此处也用其绘制行聚类与列聚类树

aplot包对5组图进行拼图
heatmap %>%
  insert_left(type, width=.05) %>%
  insert_left(phr, width=.2) %>%
  insert_top(group, height=.05) %>%
  insert_top(phc, height=.1) 
80d8943a23bc69bd949c9fdbe40311d6.png
下一节将进行相关性热图的讲解
c15e35c521c52b79fb920949735cbb62.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值