前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >多组差异表达分析的可视化

多组差异表达分析的可视化

作者头像
DoubleHelix
发布于 2023-09-06 02:04:52
发布于 2023-09-06 02:04:52
48300
代码可运行
举报
文章被收录于专栏:生物信息云生物信息云
运行总次数:0
代码可运行
我这里有很多差异分析的结果,获取这些结果的完整路径
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
degr = dir("output/016_hot_cold_tumor/DEG",
           "DESeq2-filtered.csv$",full.names = T,recursive = T)
degr[1:4]
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MedBioInfoCloud: degr[1:4]
[1] "output/016_hot_cold_tumor/DEG/TCGA-ACC/DESeq2-filtered.csv" 
[2] "output/016_hot_cold_tumor/DEG/TCGA-BLCA/DESeq2-filtered.csv"
[3] "output/016_hot_cold_tumor/DEG/TCGA-BRCA/DESeq2-filtered.csv"
[4] "output/016_hot_cold_tumor/DEG/TCGA-CESC/DESeq2-filtered.csv"

读入其中一个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data = read.csv(degr[1],header = T,
                check.names = F,row.names = 1)

查看一下数据:

我这里的差异分析结果文件很多,我选择4个文件读入并合并。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
subdeg = degr[1:4]
alldeg = do.call(rbind,lapply(subdeg, function(x){
  data = read.csv(x,header = T,
                  check.names = F,row.names = 1)
  data = data[data$gene_type == "protein_coding",]
  data = data[!duplicated(data[,"gene_name"]),]
  data$cancer = unlist(strsplit(x,"/"))[4]
  data$cancer = unlist(strsplit(data$cancer,"-"))[2]
  return(data)
}))

合并后添加了1列cancer。

处理一下数据,并增加一列cluster

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
head(alldeg)
alldeg2 = alldeg[alldeg$direction != "Ns",]
alldeg2 = arrange(alldeg2,cancer)
alldeg2$cancer = factor(alldeg2$cancer)
alldeg2$cluster = as.numeric(alldeg2$cancer) - 1
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MedBioInfoCloud: head(alldeg2)[,(ncol(alldeg2)-3):ncol(alldeg2)]
             FDR direction cancer cluster
27  1.164291e-06        Up    ACC       0
33  1.452798e-09      Down    ACC       0
182 9.039400e-04        Up    ACC       0
430 4.099443e-03      Down    ACC       0
447 4.636853e-11      Down    ACC       0
469 8.875275e-05        Up    ACC       0

计算每组差异分析中logFC的最大值和最小值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
minlogfc = alldeg2 %>% group_by(cancer) %>% dplyr::slice(which.min(logFC))
maxlogfc = alldeg2 %>% group_by(cancer) %>% dplyr::slice(which.max(logFC))

根据分组个数,定义用来绘图的数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dfbar0 <- data.frame(x=c(0:3),
                    y= maxlogfc$logFC )
dfbar1<- data.frame(x=c(0:3),
                    y=minlogfc$logFC)

dfcol<- data.frame(x=c(0:3),
                   y=0,
                   label= unique(alldeg2$cancer))

绘制背景图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p <- ggplot()+
  geom_col(data = dfbar0,
           mapping = aes(x = x,y = y),
           fill = "#dcdcdc",alpha = 0.6)+
  geom_col(data = dfbar1,
           mapping = aes(x = x,y = y),
           fill = "#dcdcdc",alpha = 0.6) 

添加散点图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p1 = p +   geom_jitter(data = alldeg2,
                       aes(x = cluster, y = logFC, color = direction),
                       size = 0.85,
                       width =0.4)

修改点的颜色:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p2 = p1+ scale_color_manual(name=NULL,
                           values = c("blue","red"))

添加注释框:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p3 = p2 + geom_tile(data = dfcol,
                    aes(x=x,y=y),
                    height=2,
                    color = "black",
                    fill = mycol,
                    alpha = 0.6,
                    show.legend = F)

添加文本和坐标标题:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p4 = p3 + 
  labs(x="Cancer",y="log2FC") + #添加坐标标题
  ##给注释框添加文本
  geom_text(data=dfcol,
            aes(x=x,y=y,label=label),
            size =6,
            color ="black")

修改主题,需要把横坐标的数值去掉,因为它没有任何意义。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p4 + theme_minimal()+
  theme(
    axis.title = element_text(size = 13,
                              color = "black",
                              face = "bold"),
    axis.line.y = element_line(color = "black",
                               size = 1),
    axis.line.x = element_blank(),
    axis.text.x = element_blank(),
    axis.text.y = element_text(size = 15,face = "bold", colour = "#1A1A1A"),
    panel.grid = element_blank(),
    legend.direction = "vertical",
    legend.text = element_text(size = 15)
  )

完整代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ggplot()+
  geom_col(data = dfbar0,
           mapping = aes(x = x,y = y),
           fill = "#dcdcdc",alpha = 0.6)+
  geom_col(data = dfbar1,
           mapping = aes(x = x,y = y),
           fill = "#dcdcdc",alpha = 0.6)+
  geom_jitter(data = alldeg2,
              aes(x = cluster, y = logFC, color = direction),
              size = 1.5,
              width =0.4)+
  scale_color_manual(name=NULL,
                     values = c("blue","red"))+
  geom_tile(data = dfcol,
            aes(x=x,y=y),
            height=2,
            color = "black",
            fill = mycol,
            alpha = 0.6,
            show.legend = F)+
  
  labs(x="Cancer",y="log2FC") + #添加坐标标题
  ##给注释框添加文本
  geom_text(data=dfcol,
            aes(x=x,y=y,label=label),
            size =6,
            color ="black")+
  theme_minimal()+
  theme(
    axis.title = element_text(size = 13,
                              color = "black",
                              face = "bold"),
    axis.line.y = element_line(color = "black",
                               size = 1),
    axis.line.x = element_blank(),
    axis.text.x = element_blank(),
    axis.text.y = element_text(size = 15,face = "bold", colour = "#1A1A1A"),
    panel.grid = element_blank(),
    legend.direction = "vertical",
    legend.text = element_text(size = 15)
  )

统计所有分组差异基因的频率,找出共同基因并标注出来。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gene_stat = as.data.frame(table(alldeg2$gene_name))
gene_stat = arrange(gene_stat,desc(Freq))
head(gene_stat)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MedBioInfoCloud: head(gene_stat)
     Var1 Freq
1    AOAH    4
2 ARHGAP9    4
3    C1QA    4
4    C1QB    4
5    C1QC    4

总共4个分组的差异分析,频率为4的基因就是共同的差异表达基因。我们选择3个来显示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gs = gene_stat$Var1[gene_stat$Freq ==4][1:3]
gstab = alldeg2[alldeg2$gene_name %in% gs,]
gstab = arrange(gstab,cancer)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(ggrepel)
fig +
  geom_text_repel(
    data=gstab,
    aes(x=cluster,y=logFC,label=gene_name),
    force = 1.2,
    arrow = arrow(length = unit(0.008, "npc"),
                  type = "open", ends = "last")
  )
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MedBioInfoCloud 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ggplot2优雅绘制蛋白结构域与基因结构图
❝小编很久之前写过一系列基因家族数据可视化的文档,最近对基因家族数据可视化又有了新的认识下面来绘制这一类文章里面的一张常用图,下面来看具体操作 ❞ 绘制进化树 tree <- read.newick("tree.nwk",node.label = "support") %>% ggtree(branch.length = "none")+ theme_void()+ theme(legend.title=element_blank(), legend.position =
R语言数据分析指南
2022/09/21
1.9K0
ggplot2优雅绘制蛋白结构域与基因结构图
生物信息数据分析教程视频——13-3种R包(DESeq2、edgeR和limma)进行RNAseq的差异表达分析与比较
视频地址:http://mpvideo.qpic.cn/0bc3zeaakaaalqalwhjtmzrvbsodaxeqabia.f10002.mp4? 参考文章: 超详细的DESeq2和edg
DoubleHelix
2022/12/15
1.4K0
生物信息数据分析教程视频——13-3种R包(DESeq2、edgeR和limma)进行RNAseq的差异表达分析与比较
漂亮的单细胞多组火山图
《Single-cell transcriptome analysis reveals the association between histone lactylation and cisplatin resistance in bladder cancer 》
用户11414625
2024/12/20
1080
漂亮的单细胞多组火山图
多分组差异分析结果的两种展示形式
最近分析了一批RNA-seq的测序数据,发现DEseq2分析后有多了比较组。之前我们会绘制多个火山图或Upset图去呈现结果。但是,由于这两种方式被大家用太多了,所以我们想换几种另外的展示方式。我们在网上差了很多资料,其中有两个图个人感觉很不错,于是,就有了这一期的文案。下面我们直接进入今天的主题分享:
生信菜鸟团
2024/05/20
5300
多分组差异分析结果的两种展示形式
免疫浸润结果可视化
在之前的推文中我们介绍了2行代码实现9种免疫浸润方法,今天给大家介绍下常见的免疫浸润结果的可视化。
医学和生信笔记
2023/08/30
1.3K0
免疫浸润结果可视化
一网打尽转录组差异分析!!!
差异分析在转录组数据分析中占据着举足轻重的地位,是揭示基因表达变化的关键步骤。然而,面对众多如DESeq2、limma和edgeR等转录组分析R包,分析人员常常面临选择困境。本文旨在深入探讨这些常用差异分析R包的特点、优劣,以及它们与t检验/Wilcox秩和检验(Wilcox-rank-sum test)在差异分析结果上的异同点。
生信学习者
2024/06/11
4620
一网打尽转录组差异分析!!!
ggplot2优雅绘制多组旭日图
有需要学习数据可视化的朋友,欢迎到小编的「淘宝店铺」 「R语言数据分析指南」下单购买,内容主要包括各种「高分论文的图表分析复现以及一些个性化图表的绘制」均包含数据+代码。购买会员文档后微信发小编订单号即邀请进新的会员交流群。
R语言数据分析指南
2024/03/20
5240
ggplot2优雅绘制多组旭日图
87-R可视化19-利用其他图层映射自由的控制背景的颜色
有的小朋友可能会说,这不就是个背景吗?在[[57-R可视化6-ggplot2三部曲最终之进阶为菜鸟]] 中我也提到过主题中的panel.background 参数,比如下图:
北野茶缸子
2022/02/08
4930
87-R可视化19-利用其他图层映射自由的控制背景的颜色
TCGA数据挖掘(四):表达差异分析(4)
在之前我们的文章:TCGA数据挖掘(三):表达差异分析中,我们利用的是TCGAbiolinks包中的TCGAanalyze_DEA函数进行差异表达分析,我们也提到可以选择基于limma或edgeR包进行分析,TCGA数据挖掘(三):表达差异分析这一讲中我们利用的是edgeR包,之后我们在文章:TCGA数据挖掘(四):表达差异分析(2)和TCGA数据挖掘(四):表达差异分析(3)中分别也介绍了其他方法的差异分析,包括edgeR和DESeq包,今天这一讲,我们就利用TCGAbiolinks包中的TCGAanalyze_DEA函数基于limma包进行差异分析。
DoubleHelix
2019/09/18
4.6K0
TCGA数据挖掘(四):表达差异分析(4)
没想到修个火山图这么麻烦
MAplot转录组差异基因表达展示_maplot r语言_TS的美梦的博客-CSDN博客自己也顺着这线索另外找了教程
生信菜鸟团
2023/09/09
7090
没想到修个火山图这么麻烦
三种转录组差异分析方法及区别你会了吗?
在做项目时,曾有小伙伴对我用edgeR进行差异分析筛选出的具体显著差异基因表示质疑,因为发表的文章清楚的说明某个基因是差异基因,但是我edgeR的分析结果并没有表明。在小伙伴的质疑下,我认真看了下文章,发现文章用的是DEseq2进行差异分析。值得注意的是该小伙伴关注的差异基因是一个离散比较大的基因,此处的离散较大可以理解为假定对照组为5,6,7;实验组则为14,13,3的情况。那为什么这个基因在edgeR分析下不是显著差异基因,然而在DEseq2的分析下是差异基因呢?这应该很大程度源于算法判定显著差异基因的区别。接着,我看了关于DEseq2与edgeR区别的描述,发现「edgeR与Deseq2都是基于负二项分布模型做的,两者处理同一组数据时,相同阈值处理大部分基因是一样的,但是也会有一部分基因会因为离散度不同导致差异不同」,如刚刚示例的基因离散度被DEseq2识别为差异,但是不被edgeR识别,所以两种算法获取的差异基因与数目是存在细微区别的。
生信菜鸟团
2022/10/31
5.9K1
三种转录组差异分析方法及区别你会了吗?
转录组表达数据分析的一些可视化
通过前面的讲解,我们顺利的了解了GEO数据库以及如何下载其数据,得到我们想要的表达矩阵,也学会了两个常用的套路分析得到的表达矩阵,就是GSEA分析和差异分析。也通过超几何分布检验的方法成功的理解了我们的统计学显著的差异表达基因的生物学功能。包括 GO/KEGG数据库 以及 Reactome和Msigdb数据库的理解。 历史目录: 解读GEO数据存放规律及下载,一文就够 解读SRA数据库规律一文就够 从GEO数据库下载得到表达矩阵 一文就够 GSEA分析一文就够(单机版+R语言版) 根据分组信息做差异分析-
生信技能树
2018/03/29
1.7K0
转录组表达数据分析的一些可视化
ggplot2优雅的绘制配对气泡图
Step1. R包和数据加载、主题设置 测试数据在: 链接:https://pan.baidu.com/s/1MuMgMZZCcdO-IGS7_ysfkQ?pwd=1234 提取码:1234 libr
生信菜鸟团
2023/08/23
5030
ggplot2优雅的绘制配对气泡图
带有疾病进展的多分组差异结果如何展示?
此次给绘制的图来自文献《Triple DMARD treatment in early rheumatoid arthritis modulates synovial T cell activation and plasmablast/plasma cell differentiation pathways》,是2017发表的,使用了他们团队自己2016发表的转录组测序数据,所以其实是有两个转录组测序数据集。
生信技能树
2025/01/02
1480
带有疾病进展的多分组差异结果如何展示?
实习僧招聘网爬虫数据可视化
我本来对实习僧网站是没什么好感的,因为之前自己在实习僧上投的实习简历几乎全部都石沉大海了(一个文科生偏要去投数据分析岗不碰壁才怪~_~)! 然鹅看到最近知乎爬虫圈儿里的两大趋势:爬美图;爬招聘网站。 后来大致了解下了,几乎各类大型的招聘文章都被别人爬过了,自己再去写免不了模仿之嫌,而且大神们都是用Python去爬的(Python我刚学会装包和导数据),自己也学不来。 现在只能选一个还没怎么被盯上的招聘网站,没错就它了——实习僧。 http://www.shixiseng.com/ 说老实话,实习僧的网站做的
数据小磨坊
2018/04/11
1.4K0
实习僧招聘网爬虫数据可视化
生物信息数据分析教程视频——12-基因之间的相关性分析及可视化
视频地址:http://mpvideo.qpic.cn/0bc3niaasaaatialkbbtenrva2wdbfvaacia.f10002.mp4? 参考: 如何合理的展示相关性分析结果??
DoubleHelix
2022/12/15
1.4K1
生物信息数据分析教程视频——12-基因之间的相关性分析及可视化
scRNA分析| Seurat堆叠小提琴图不满足? 那就ggplot2 堆叠 各种元素
单细胞常见的可视化方式有DimPlot,FeaturePlot ,DotPlot ,VlnPlot 和 DoHeatmap几种 ,Seurat均可以实现,但文献中的图大多会精美很多。比如
生信补给站
2023/08/25
4.6K0
scRNA分析| Seurat堆叠小提琴图不满足?  那就ggplot2 堆叠 各种元素
文献组图
追风少年i
2025/01/07
640
文献组图
生物信息数据分析教程视频——07-TCGA数据库:基因的表达探索
视频地址:http://mpvideo.qpic.cn/0b2ewiaakaaahmalygztmbrvbmwdawzaabia.f10002.mp4? 参考文章: 【0代码】单基因泛癌分析教程 视频
DoubleHelix
2022/12/15
7160
跟着Cell学作图:R语言ggplot2作图展示差异表达的基因
一组对照加处理这种实验的差异表达分析结果通常是用火山图来展示,如果是很多组实验的话如何展示,这种情况我之前还没有遇到过。公众号后台有读者留言问到了如下的图
用户7010445
2022/02/17
1.3K0
跟着Cell学作图:R语言ggplot2作图展示差异表达的基因
推荐阅读
相关推荐
ggplot2优雅绘制蛋白结构域与基因结构图
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验