前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟着Cell学作图:R语言ggplot2作图展示差异表达的基因

跟着Cell学作图:R语言ggplot2作图展示差异表达的基因

作者头像
用户7010445
发布2022-02-17 17:17:17
1.2K0
发布2022-02-17 17:17:17
举报
文章被收录于专栏:小明的数据分析笔记本

一组对照加处理这种实验的差异表达分析结果通常是用火山图来展示,如果是很多组实验的话如何展示,这种情况我之前还没有遇到过。公众号后台有读者留言问到了如下的图

这个图来自于论文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 一个分组
  • 第五列是表示数据来自于哪组实验

首先是读取数据

代码语言:javascript
复制
dat00<-read.csv("cellexamdat.csv",
                row.names = 1)
head(dat00)

接下来是构造数据集用来添加中间部分的色块

代码语言:javascript
复制
dat<-data.frame(x=c("A","B","C","D"),
                y=0,
                label=c(0,1,2,3))

构造数据集用来添加背景的灰色柱子

代码语言:javascript
复制
datbar<-data.frame(x=c("A","B","C","D"),
                   y=c(20,10,20,10))

接下来是作图代码

代码语言:javascript
复制
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))

结果如下

作图的代码具体意思就不详细介绍了,争取抽时间录制视频介绍,视频可能会更直观一点。

还有一个问题是如何添加表示基因名的文本标签,这个暂时没有想明白,想明白了再来介绍。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先是将差异表达分析的结果整理成如下格式
  • 首先是读取数据
  • 接下来是构造数据集用来添加中间部分的色块
  • 构造数据集用来添加背景的灰色柱子
  • 接下来是作图代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档