使用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

这样就很清晰了!


四、富集条形图的应用



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

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


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

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


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

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


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

目录
相关文章
|
3月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
2月前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
58 3
|
3月前
R语言基于表格文件的数据绘制具有多个系列的柱状图与直方图
【9月更文挑战第9天】在R语言中,利用`ggplot2`包可绘制多系列柱状图与直方图。首先读取数据文件`data.csv`,加载`ggplot2`包后,使用`ggplot`函数指定轴与填充颜色,并通过`geom_bar`或`geom_histogram`绘图。参数如`stat`, `position`, `alpha`等可根据需要调整,实现不同系列的图表展示。
|
3月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
4月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
4月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
7月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
7月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
4月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
4月前
|
机器学习/深度学习 数据采集
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分类分析预测房价及交叉验证
上述介绍仅为简要概述,每个模型在实施时都需要仔细调整与优化。为了实现高度精确的预测,模型选择与调参是至关重要的步骤,并且交叉验证是提升模型稳健性的有效途径。在真实世界的房价预测问题中,可能还需要结合地域经济、市场趋势等宏观因素进行综合分析。
91 3