使用R语言绘制富集条形图,轻松分析基因表达数据

简介: 为了实现富集分析和绘制富集条形图,我们可以使用R语言。R语言是一种免费开源的编程语言和软件环境,用于统计计算,绘制图表和数据分析。它在大量生物信息学数据分析中得到应用,并成为当前技术最前沿的生物信息学研究领域。如此优势的R语言支持,是进行富集分析和富集条形图的理想之选。

一、引言



富集分析(enrichment analysis)是一种生物信息学方法,它可以帮助我们识别基因或其他的生物实体在某个特定的类别中过度表示的趋势。通俗来说,富集分析通过将基因分类到特定的集合中,然后根据基因在集合中的分布和总体分布的比较,来寻找哪些集合与特定的生物过程、疾病或其他功能相关联。其中一种常用的可视化形式就是富集条形图(enrichment bar plot)。它可以显示分析结果并解释生物学上富集通路的各种特征。


为了实现富集分析和绘制富集条形图,我们可以使用R语言。R语言是一种免费开源的编程语言和软件环境,用于统计计算,绘制图表和数据分析。它在大量生物信息学数据分析中得到应用,并成为当前技术最前沿的生物信息学研究领域。如此优势的R语言支持,是进行富集分析和富集条形图的理想之选。


二、富集分析与富集条形图



2.1 从富集分析到富集条形图:一个综述性的介绍


富集分析广泛用于生物信息学中的基因组学、转录组学以及蛋白质组学等多个方面。富集分析旨在理解基因或蛋白质组的基本生物学特性以及在某些条件或环境下的行为特征。在生物医学研究中,富集分析通常用于揭示不同组的基因表达谱上的差异,并帮助确定基因表达在特定疾病或生物过程中的生物学作用。


富集条形图是一种重要的富集分析可视化工具,它能帮助我们对结果进行更清晰、更准确、更生动的展示。富集条形图可以显示各个功能通路在分析过程中的显著程度,并对显著的富集通路进行分类。这种可视化工具可以为数据分析者提供更详细、更准确、更全面的信息,从而为研究和实践提供更丰富的分析思路。


2.2 介绍什么是富集分析和富集条形图


富集分析是一种生物信息学方法。它将特定基因或细胞信号转化为相应的通路或基本生物过程,进而对它们的富集情况进行比较分析。富集分析的主要步骤包括:选取样本、收集分析数据、比较基因表达差异、寻找生物学趋势、验证检测结果等。


富集条形图是一种可视化富集分析结果的工具。通常情况下,富集条形图按富集度递减的顺序显示富集通路,对应的颜色告诉你通路的显著水平有多高。此外,绘制富集条形图时,还可以根据不同的颜色映射,显示富集通路的基因数目和富集通路的显著水平,更直观地为数据提供了参考。


2.3 讲述富集条形图的组成和绘制方法


富集条形图主要由两部分组成——Y轴和X轴。其中,Y轴按照研究通路的名称递减排序,而X轴则显示各个研究通路在不同样本中的富集标准。此外,富集条形图还包括条形图、注释分布图、颜色条、关键的样本名称和注释说明。


富集条形图的绘制主要分为三个步骤:首先是收集数据,其次是进行基本数据分析,最后是使用R语言进行绘图。在这个过程中,需要绘制的图表包括函数和通路富集度、显著性水平和节点数的折线图,以及富集条形图本身。


三、数据集



该数据集是GOplot自带的数据集,可以用来学习Go富集分析和可视化,接下来我们引入数据集


library(GOplot)
data(EC)
library(RColorBrewer)
library(ggplot2)
library(dplyr)


数据集展示:

> # 查看数据
> head(EC$eset)
    Gene_Symbol     Brain_A     Brain_B    Brain_C     Heart_A     Heart_B     Heart_C
1 0610007P14Rik  0.58382130  0.81117820 -0.2480545 -0.67075443 -0.58700850 -0.65176487
2 0610008F07Rik  0.13262606  0.11230135  0.3122339  0.10193062 -0.06617737  0.09765196
3 0610009B22Rik -0.09357643 -0.20074654  0.2505083 -1.02136140 -0.18762684 -0.69150734
4 0610009D07Rik  0.06708336  0.12616920 -0.1234570 -0.74400520 -0.42762280 -0.43724203
5 0610009O20Rik  0.02191877  0.13460398  0.2718530  0.27460957 -0.07751560  0.00000000
6 0610010F05Rik -0.10588837 -0.05568028  0.0115509  0.06084633 -0.18752098  0.01155090
> # 查看数据
> head(EC$genelist)
       ID    logFC   AveExpr        t  P.Value adj.P.Val        B
1 Slco1a4 6.645388 1.2168670 88.65515 1.32e-18  2.73e-14 29.02715
2 Slc19a3 6.281525 1.1600468 69.95094 2.41e-17  2.49e-13 27.62917
3     Ddc 4.483338 0.8365231 65.57836 5.31e-17  3.65e-13 27.18476
4 Slco1c1 6.469384 1.3558865 59.87613 1.62e-16  8.34e-13 26.51242
5  Sema3c 5.515630 2.3252117 58.53141 2.14e-16  8.81e-13 26.33626
6 Slc38a3 4.761755 0.9218670 54.11559 5.58e-16  1.76e-12 25.70308
> # 查看数据
> head(EC$david)
  Category         ID                             Term
1       BP GO:0007507                heart development
2       BP GO:0001944          vasculature development
3       BP GO:0001568         blood vessel development
4       BP GO:0048729             tissue morphogenesis
5       BP GO:0048514       blood vessel morphogenesis
6       BP GO:0051336 regulation of hydrolase activity
                                             Genes
1       DLC1, NRP2, NRP1, EDN1, PDLIM3, GJA1, TTN, GJA5, ZIC3, TGFB2, CERKL, GATA6, COL4A3BP, GAB1, SEMA3C, MKL2, SLC22A5, MB, PTPRJ, RXRA, VANGL2, MYH6, TNNT2, HHEX, MURC, MIB1, FOXC2, FOXC1, ADAM19, MYL2, TCAP, EGLN1, SOX9, ITGB1, CHD7, HEXIM1, PKD2, NFATC4, PCSK5, ACTC1, TGFBR2, NF1, HSPG2, SMAD3, TBX1, TNNI3, CSRP3, FOXP1, KCNJ8, PLN, TSC2, ATP6V0A1, TGFBR3, HDAC9
2 GNA13, ACVRL1, NRP1, PGF, IL18, LEPR, EDN1, GJA1, FOXO1, GJA5, TGFB2, WARS, CERKL, APOE, CXCR4, ANG, SEMA3C, NOS2, MKL2, FGF2, RAPGEF1, PTPRJ, RECK, EFNB2, VASH1, PNPLA6, THY1, MIB1, NUS1, FOXC2, FOXC1, CAV1, CDH2, MEIS1, WT1, CDH5, PTK2, FBXW8, CHD7, PLCD1, PLXND1, FIGF, PPAP2B, MAP2K1, TBX4, TGFBR2, NF1, TBX1, TNNI3, LAMA4, MEOX2, ECSCR, HBEGF, AMOT, TGFBR3, HDAC7
3        GNA13, ACVRL1, NRP1, PGF, IL18, LEPR, EDN1, GJA1, FOXO1, GJA5, TGFB2, WARS, CERKL, APOE, CXCR4, ANG, SEMA3C, NOS2, MKL2, FGF2, RAPGEF1, PTPRJ, RECK, VASH1, PNPLA6, THY1, MIB1, NUS1, FOXC2, FOXC1, CAV1, CDH2, MEIS1, WT1, CDH5, PTK2, FBXW8, CHD7, PLCD1, PLXND1, FIGF, PPAP2B, MAP2K1, TBX4, TGFBR2, NF1, TBX1, TNNI3, LAMA4, MEOX2, ECSCR, HBEGF, AMOT, TGFBR3, HDAC7
4                                   DLC1, ENAH, NRP1, PGF, ZIC2, TGFB2, CD44, ILK, SEMA3C, RET, AR, RXRA, VANGL2, LEF1, TNNT2, HHEX, MIB1, NCOA3, FOXC2, FOXC1, TGFB1I1, WNT5A, COBL, BBS4, FGFR3, TNC, BMPR2, CTNND1, EGLN1, NR3C1, SOX9, TCF7L1, IGF1R, FOXQ1, MACF1, HOXA5, BCL2, PLXND1, CAR2, ACTC1, TBX4, SMAD3, FZD3, SHANK3, FZD6, HOXB4, FREM2, TSC2, ZIC5, TGFBR3, APAF1
5                                                                                            GNA13, CAV1, ACVRL1, NRP1, PGF, IL18, LEPR, EDN1, GJA1, CDH2, MEIS1, WT1, TGFB2, WARS, PTK2, CERKL, APOE, CXCR4, ANG, SEMA3C, PLCD1, NOS2, MKL2, PLXND1, FIGF, FGF2, PTPRJ, TGFBR2, TBX4, NF1, TBX1, TNNI3, PNPLA6, VASH1, THY1, NUS1, MEOX2, ECSCR, AMOT, HBEGF, FOXC2, FOXC1, HDAC7
6                                                                               CAV1, XIAP, AGFG1, ADORA2A, TNNC1, TBC1D9, LEPR, ABHD5, EDN1, ASAP2, ASAP3, SMAP1, TBC1D12, ANG, TBC1D14, MTCH1, TBC1D13, TBC1D4, TBC1D30, DHCR24, HIP1, VAV3, NOS1, NF1, MYH6, RICTOR, TBC1D22A, THY1, PLCE1, RNF7, NDEL1, CHML, IFT57, ACAP2, TSC2, ERN1, APAF1, ARAP3, ARAP2, ARAP1, HTR2A, F2R
     adj_pval
1 0.000002170
2 0.000010400
3 0.000007620
4 0.000119000
5 0.000720000
6 0.001171166
> # 查看数据
> head(EC$genes)
     ID      logFC
1  PTK2 -0.6527904
2 GNA13  0.3711599
3  LEPR  2.6539788
4  APOE  0.8698346
5 CXCR4 -2.5647537
6  RECK  3.6926860
> # 查看数据
> EC$process
[1] "heart development"        "phosphorylation"          "vasculature development"  "blood vessel development" "tissue morphogenesis"     "cell adhesion"           
[7] "plasma membrane"


2.2 数据预处理


使用cirlce_dat函数整合GO注释结果数据和基因差异表达分析数据结合起来,形成作图对象。

circ <- circle_dat(EC$david, EC$genelist)
circ_filter <- circ %>% filter(category == "MF")
head(circ)


结果展示:

category         ID              term count  genes      logFC adj_pval     zscore
1       BP GO:0007507 heart development    54   DLC1 -0.9707875 2.17e-06 -0.8164966
2       BP GO:0007507 heart development    54   NRP2 -1.5153173 2.17e-06 -0.8164966
3       BP GO:0007507 heart development    54   NRP1 -1.1412315 2.17e-06 -0.8164966
4       BP GO:0007507 heart development    54   EDN1  1.3813006 2.17e-06 -0.8164966
5       BP GO:0007507 heart development    54 PDLIM3 -0.8876939 2.17e-06 -0.8164966
6       BP GO:0007507 heart development    54   GJA1 -0.8179480 2.17e-06 -0.8164966


三、数据可视化



3.1 常规富集条形图(ggplot2)


#先自定义主题:
mytheme <- theme(
    axis.title = element_text(size = 14),
    axis.text = element_text(size = 12),
    plot.title = element_text(size = 15,
    hjust = 0.5,
    face = "bold"),
    legend.title = element_text(size = 14),
    legend.text = element_text(size = 12),
    plot.margin = margin(t = 5.8,
    r = 12,
    l = 6.5,
    b = 6.5)
)
#常规富集条形图绘图:
p <- ggplot(data = circ_filter, aes(x = count, y = ID, fill = -log10(adj_pval))) +
scale_fill_distiller(palette = "RdPu",direction = 1) + 
geom_bar(stat = "identity", width = 0.8) + 
labs(x = "count", y = "", title = "KEGG富集图") + 
theme_bw() + mytheme
p

640.png


3.2 组合图(ggplot2)


上图看起来还是不是那么明显,我们可以使用组合图的形似来看。


bar <- ggplot(data = circ_filter,aes(x = ID, y = -log10(adj_pval))) +
geom_bar(stat = "identity", width = 0.8, fill = 'pink') +
scale_y_continuous() +
labs(x = "", y = "-log10(adj_pval)", title = "KEGG富集图") +
theme_classic() + mytheme +
coord_flip()
bar


640.png


#绘制折线散点图展示count数目:
line <- ggplot(data = circ_filter, aes(x = ID, y = count, group = 1)) +
geom_line(color = "green", cex = 0.5) +
geom_point(size = 2) +
scale_y_continuous() +
labs(x = "", y = "Count", title = "KEGG富集图") +
theme_classic() + mytheme +
coord_flip()
line


640.png


# 组合图
bar_line <- ggplot() +
geom_bar(data = circ_filter, aes(x = ID, y = -log10(adj_pval)),
stat = "identity", width = 0.8, fill = 'pink') +
scale_y_continuous(
expand = c(0,0),
sec.axis = sec_axis(~. /1.5, 
name = 'Count')) + #辅助轴刻度线断点
geom_line(data = circ_filter, aes(x = ID, y = count*1.5, group = 1),
color = "blue", cex = 0.5) +
geom_point(data = circ_filter, aes(x = ID, y = count*1.5),
size = 2) +
labs(x = "", y = "-log10(pvalue)", title = "KEGG富集图") +
theme_classic() +
mytheme +
coord_flip() #由于geom_line函数绘制折线是按照变量在x轴水平方向顺序进行连接,因此这里把x/y轴对应变量交换了一下,最后再通过坐标翻转回来
bar_line


640.png


3.3 GOplot绘制富集条形图


  • 所有种类
GOBar(circ, display = 'multiple', zsc.col = c('blue', 'white', 'red'))

640.png


是不是觉得有写不清晰,看不出x坐标的标注。没关系,我们可以选择性展示其中感兴趣的部分。


  • 展示特定种类
GOBar(subset(circ, category == 'MF'))


image.png

这样就很清晰了!


四、富集条形图的应用



  • 利用富集条形图解析基因表达的差异

为了探索不同表达谱中的生物学特性和功能,富集条形图常常被用于测量什么样的通路在某些样本中显著富集。这种分析非常适用于探索基因表达差异性,探索基因与功能通路之间的相关性。将不同层次的数据进行分析,也可以为更深层次的功能研究提供指导性意见。


  • 描述如何从富集条形图中识别重要的通路或过程

富集条形图可以帮助我们识别在数据集中显著富集的生物过程或通路。在一张富集条形图中,更重要的富集通路会持续出现,并生成更大的富集度。此时,人们应该进一步分析这些重要的富集通路,并从中确定与数据集特性相关的背景和性质。


  • 强调富集条形图在生物大数据处理中的重要性。

富集条形图在生物大数据分析中起着核心地位,能够对基因、蛋白质、代谢物等高通量数据进行注释。随着大数据时代的到来,富集分析与富集条形图成为了分析工具的基石之一,如生物医学信息学中的疾病诊断、药物研发、基因功能验证等等,都需要富集条形图进行数据展示,以辅助我们进行快速准确的数据分析与解读。


*「未经许可,不得以任何方式复制或抄袭本篇文章之部分或全部内容。版权所有,侵权必究。」

目录
相关文章
|
1天前
|
数据可视化 数据挖掘
R语言用igraph对上海公交巴士路线数据进行复杂网络、网络图可视化
R语言用igraph对上海公交巴士路线数据进行复杂网络、网络图可视化
|
1天前
|
机器学习/深度学习 数据可视化
数据分享|R语言用RFM、决策树模型顾客购书行为的数据预测
数据分享|R语言用RFM、决策树模型顾客购书行为的数据预测
|
1天前
|
数据可视化 数据挖掘
数据分享|R语言分析上海空气质量指数数据:kmean聚类、层次聚类、时间序列分析:arima模型、指数平滑法
数据分享|R语言分析上海空气质量指数数据:kmean聚类、层次聚类、时间序列分析:arima模型、指数平滑法
|
1天前
|
数据可视化 数据挖掘
R语言生存分析数据分析可视化案例(上)
R语言生存分析数据分析可视化案例
|
1天前
|
算法 数据可视化 Windows
R语言BUGS/JAGS贝叶斯分析: 马尔科夫链蒙特卡洛方法(MCMC)采样(下)
R语言BUGS/JAGS贝叶斯分析: 马尔科夫链蒙特卡洛方法(MCMC)采样
|
1天前
|
算法 数据可视化
R语言BUGS/JAGS贝叶斯分析: 马尔科夫链蒙特卡洛方法(MCMC)采样(上)
R语言BUGS/JAGS贝叶斯分析: 马尔科夫链蒙特卡洛方法(MCMC)采样
|
1天前
|
数据可视化 知识图谱
R语言、SAS潜类别(分类)轨迹模型LCTM分析体重指数 (BMI)数据可视化
R语言、SAS潜类别(分类)轨迹模型LCTM分析体重指数 (BMI)数据可视化
|
1天前
|
数据可视化
R语言淮河流域水库水质数据相关性分析、地理可视化、广义相加模型GAM调查报告
R语言淮河流域水库水质数据相关性分析、地理可视化、广义相加模型GAM调查报告
|
1天前
数据分享|R语言回归模型诊断、离群值分析学生考试成绩、病人医护质量满意度、婴儿死亡率和人均收入、针叶树荫面积数据
数据分享|R语言回归模型诊断、离群值分析学生考试成绩、病人医护质量满意度、婴儿死亡率和人均收入、针叶树荫面积数据
|
1天前
|
机器学习/深度学习 数据可视化
R语言MCMC的lme4二元对数Logistic逻辑回归混合效应模型分析吸烟、喝酒和赌博影响数据
R语言MCMC的lme4二元对数Logistic逻辑回归混合效应模型分析吸烟、喝酒和赌博影响数据

热门文章

最新文章