一组对照加处理这种实验的差异表达分析结果通常是用火山图来展示,如果是很多组实验的话如何展示,这种情况我之前还没有遇到过。公众号后台有读者留言问到了如下的图
这个图来自于论文A Spatiotemporal Organ-Wide Gene Expression and Cell Atlas of the Developing Human Heart
本地pdf PIIS0092867419312826.pdf
他这个应该是单细胞的数据,具体展示的是什么意思我还没看明白。我的理解是0-9,10组数据分别做了差异表达分析,把差异表达分析的结果全放在一张图上展示可以采用这样的形式。
下面试着模仿一下这个图。
我没有找到这么多差异表达分析的结果,我这里只用到了4组数据
首先是将差异表达分析的结果整理成如下格式
- 第一列是基因名
- 第二列是logfc
- 第三列是adjusted p value
- 第四列是给adjusted p value 一个分组
- 第五列是表示数据来自于哪组实验
首先是读取数据
dat00<-read.csv("cellexamdat.csv",
row.names = 1)
head(dat00)
接下来是构造数据集用来添加中间部分的色块
dat<-data.frame(x=c("A","B","C","D"),
y=0,
label=c(0,1,2,3))
构造数据集用来添加背景的灰色柱子
datbar<-data.frame(x=c("A","B","C","D"),
y=c(20,10,20,10))
接下来是作图代码
library(ggplot2)
library(ggnewscale)
library(tidyverse)
ggplot()+
geom_col(data=datbar,aes(x=x,y=y),fill="grey",alpha=0.5)+
geom_col(data=datbar,aes(x=x,y=-y),fill="grey",alpha=0.5)+
geom_jitter(data=dat00 %>% filter(newcol1 == 'adjusted P-val > 0.01'),
aes(x=newcol2,y=log2FoldChange,
color=newcol1))+
geom_jitter(data=dat00 %>% filter(newcol1 == 'adjusted P-val < 0.01'),
aes(x=newcol2,y=log2FoldChange,
color=newcol1))+
scale_color_manual(name=NULL,
values = c("red","darkgrey"))+
ggnewscale::new_scale_fill()+
theme_minimal()+
theme(axis.line.y = element_line(),
axis.ticks.y = element_line(),
panel.grid = element_blank(),
legend.position = "top",
legend.justification = c(1,0),
legend.direction = "vertical",
axis.text.x = element_blank())+
labs(x="Cluster",y="average logFC")+
geom_tile(data=dat,
aes(x=x,y=y,fill=x),
height=3,color="black",
alpha=0.9,
show.legend = F)+
scale_fill_manual(values = c("#44a9a9","#4177aa","#12783c","#a94698"))+
geom_text(data=dat,aes(x=x,y=y,label=label))
结果如下
作图的代码具体意思就不详细介绍了,争取抽时间录制视频介绍,视频可能会更直观一点。
示例数据和代码可以在公众号获取
欢迎大家关注我的公众号
小明的数据分析笔记本
小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!