跟着Nature Metabolism学作图:R语言ggplot
2023-02-10 本文已影响0人
小明的数据分析笔记本
论文
Single-cell profiling of vascular endothelial cells reveals progressive organ-specific vulnerabilities during obesity
https://www.nature.com/articles/s42255-022-00674-x#Sec58
s42255-022-00674-x.pdf
https://github.com/Osynchronika/sc_EC_obesity_atlas
大部分 作图的数据都有,可以试着用论文中提供的数据复现一下论文中的图
今天的推文我们试着复现一下论文中的Figure2中的热图,figure2中有3个热图,按照复制程度排序是 figure2m figure2f 和figure2o
image.png image.png image.png我们从最简单的开始,先复现figure2m
论文中提供的数据如下
image.png数据中有很多缺失值,看论文中的配色 我猜是把缺失值替换成0了,我不太确定这种处理方式是否可以
我把数据单独复制到一个excel文件里
image.png给第一列添加一个表头
代码
读取数据
library(readxl)
dat<-read_excel("data/20230207/figure2o.xlsx",na='NA')
dat
宽格式转换为长格式
library(tidyverse)
dat%>%
mutate(gene_name=factor(gene_name,levels = gene_name))%>%
pivot_longer(!gene_name)%>%
mutate(name=str_replace(name,'_logFC',''),
value=replace_na(value,0))%>%
mutate(name=factor(name,levels = c("sc","vis","liver",
"kidney","lung","heart","brain")))-> new.dat
热图代码
library(ggplot2)
ggplot(data = new.dat,aes(x=gene_name,y=name))+
geom_tile(aes(fill=value),
color="black")+
theme_bw()+
theme(panel.border = element_blank(),
panel.grid = element_blank(),
axis.ticks = element_blank(),
axis.title = element_blank(),
axis.text.x = element_text(angle=90,face="italic"),
axis.text.y = element_blank(),
legend.position = "bottom")+
scale_fill_gradient2(low="blue",mid="white",high = "red",
midpoint = 0,
breaks=c(-0.3,0,0.3),
name="log(FC)")+
guides(fill=guide_colorbar(title.position = "top",
title.hjust = 0.5,
barwidth = 10))+
coord_equal() -> p1
p1
image.png
左侧的分组也用热图来实现,就是一个一列的热图
new.dat %>% filter(gene_name == "Apoe") %>%
ggplot(aes(x=gene_name,y=name))+
geom_tile(aes(fill=name),color="black")+
theme_bw()+
theme(panel.border = element_blank(),
panel.grid = element_blank(),
axis.ticks = element_blank(),
axis.text.x = element_blank(),
axis.title = element_blank(),
legend.position = "none",
axis.text.y = element_text(size=15,face="bold"))+
scale_x_discrete(expand=expansion(mult=c(0,0)))+
coord_equal() -> p2
p2
image.png
最后是拼图
library(patchwork)
p2 + p1
image.png
示例数据和代码可以给推文点赞,然后点击在看,最后留言获取
欢迎大家关注我的公众号
小明的数据分析笔记本
小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!