R语言绘图 | 多组GO和KEGG富集结果,分面堆积柱状图

文摘   2024-10-29 07:35   云南  

一边学习,一边总结,一边分享!

由于微信改版,一直有同学反映。存在长时间接收不到公众号的推文。那么请跟随以下步骤,将小杜的生信筆記设置为星标,不错过每一条推文教程。

欢迎关注《小杜的生信笔记》!!

如何加入社群

小杜的生信笔记仅有微信社群

1. 微信群:付费社群。添加小杜好友,加友请知:加友须知!!,加入社群请查看小杜生笔记付费加友入群声明

入群声明

2. 小杜个人微信:若你有好的教程或想法,可添加小杜个人微信。值得注意的是,小杜个人微信并不支持免费咨询长时间咨询,但支持小问题2-3个免费咨询。

小杜微信:

知识星球:

本期教程

2022年教程总汇

https://mp.weixin.qq.com/s/Lnl258WhbK2a8pRZFuIyVg

2023年教程总汇

https://mp.weixin.qq.com/s/wCTswNP8iHMNvu5GQauHdg

引言

今天分享的图形是在分析中常用到的,比如展示多组GO和KEGG富集分析的结果。你是绘制多组气泡图,或是柱状图,亦或是其他图形呢。

我们今天可以将多组的富集结果展示在一张图形上,很是方便。


原图

Code

1. 数据

直接导入自己所需绘图的数据,我们这里仅仅只需要,Term、Comparison、Up(number)、Down(number)

注意:这里我们只是展示自己所需绘图的数据,但是不仅仅局限与此。

2. 导入数据

导入数据,可以自己分批导入,亦或是自己在本地整理后,再次导入。亦或是按我们一下步骤进行操作。

注意:我们这里将各组数据分别放在execl表格中,每个sheet存一组数据。

comparisons <- c("sheet1",   #注意:这里sheet可以结合自己的需求,替换成自己的名称
"sheet2",
"sheet3",
"sheet4")

GO_dat_long <- map_dfr(comparisons, function(sheet_name){
read_excel("01.GO_out.Level2.xlsx", sheet = sheet_name) %>%
dplyr::select(Term = `GO Term (level2)`,
Up = `number_of_out (up)`,
Down = `number_of_out (down)`) %>%
dplyr::mutate(Comparison = str_replace_all(sheet_name, "_", " ")) %>% # 添加比较列
dplyr::select(Comparison, everything()) %>% # 重新排列列的顺序
##'@转换数据格式
tidyr::pivot_longer(cols = c(Up, Down), # 将 "up" 和 "down" 列转换为长格式
names_to = "type", # 新列 "type" 表示原列名 ("up" 或 "down")
values_to = "Count") %>% # 新列 "Count" 表示原列的值
dplyr::select(Comparison, Term, type, Count)
})

3. 排序

可以先对数据按 Term 分组,计算每个 Term 的总数量(up 和 down 的总和),然后按总数量降序排列 Term。可以使用 fct_reorder() 函数来重新排序 Term,并确保 y 轴从多到少显示。

GO_dat_long <- GO_dat_long %>%
group_by(Term) %>%
mutate(TotalCount = sum(Count)) %>% # 计算每个 Term 的总数
ungroup() %>%
mutate(Term = fct_reorder(Term, TotalCount, .desc = F)) # 按总数降序排列 Term1)
  1. 绘图
ggplot(GO_dat_long, aes(x = Count, y = Term, fill = type)) +
geom_bar(stat = "identity", position = "stack") +
facet_wrap(~ Comparison, scales = "free_x", nrow = 1) +
scale_fill_manual(values = c("Up" = "#fc8d62", "Down" = "#80b1d3")) + # #fc8d62","#80b1d3
labs(x = "Gene number", y = NULL ) +
theme_test() +
theme(text = element_text(size = 8,family = "Time New Roman"),
axis.text.x = element_text(size = 10, color = "black"),
axis.text.y = element_text(size = 20, colour = "black"),
strip.text = element_text(size = 10),
strip.background = element_blank(), # 去掉分面标题的背景
axis.title = element_text(size = 10),
legend.title = element_blank(),
legend.position = "right",
panel.grid.major.x = element_line(size = 0.5, linetype = "dashed", color = "gray"), # 数值列带有虚线
#panel.grid.major.y = element_line(size = 0.3, color = "gray"),
panel.spacing = unit(0.05, "lines") # 调整图形之间的间隔
)

版本信息

> sessionInfo()
R version 4.4.0 (2024-04-24 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 11 x64 (build 22631)

Matrix products: default


locale:
[1] LC_COLLATE=Chinese (Simplified)_China.utf8
[2] LC_CTYPE=Chinese (Simplified)_China.utf8
[3] LC_MONETARY=Chinese (Simplified)_China.utf8
[4] LC_NUMERIC=C
[5] LC_TIME=Chinese (Simplified)_China.utf8

time zone: Asia/Shanghai
tzcode source: internal

attached base packages:
[1] stats4 stats graphics grDevices utils datasets
[7] methods base

other attached packages:
[1] extrafont_0.19 readxl_1.4.3
[3] ggVennDiagram_1.5.2 org.Slycompersicum.eg.db_4.0
[5] RCurl_1.98-1.16 jsonlite_1.8.8
[7] AnnotationForge_1.46.0 AnnotationDbi_1.66.0
[9] KEGGREST_1.44.1 lubridate_1.9.3
[11] forcats_1.0.0 stringr_1.5.1
[13] dplyr_1.1.4 purrr_1.0.2
[15] readr_2.1.5 tidyr_1.3.1
[17] tibble_3.2.1 tidyverse_2.0.0
[19] clusterProfiler_4.12.6 cowplot_1.1.3
[21] DESeq2_1.44.0 SummarizedExperiment_1.34.0
[23] Biobase_2.64.0 MatrixGenerics_1.16.0
[25] matrixStats_1.3.0 GenomicRanges_1.56.1
[27] GenomeInfoDb_1.40.1 IRanges_2.38.1
[29] S4Vectors_0.42.1 BiocGenerics_0.50.0
[31] ggplot2_3.5.1 writexl_1.5.0

loaded via a namespace (and not attached):
[1] RColorBrewer_1.1-3 rstudioapi_0.16.0
[3] magrittr_2.0.3 farver_2.1.2
[5] ragg_1.3.2 fs_1.6.4
[7] zlibbioc_1.50.0 vctrs_0.6.5
[9] memoise_2.0.1 ggtree_3.12.0
[11] S4Arrays_1.4.1 cellranger_1.1.0
[13] SparseArray_1.4.8 gridGraphics_0.5-1
[15] plyr_1.8.9 httr2_1.0.3
[17] cachem_1.1.0 igraph_2.0.3
[19] lifecycle_1.0.4 pkgconfig_2.0.3
[21] Matrix_1.7-0 R6_2.5.1
[23] fastmap_1.2.0 gson_0.1.0
[25] GenomeInfoDbData_1.2.12 digest_0.6.37
[27] aplot_0.2.3 enrichplot_1.24.2
[29] colorspace_2.1-1 patchwork_1.2.0
[31] textshaping_0.4.0 RSQLite_2.3.7
[33] labeling_0.4.3 timechange_0.3.0
[35] fansi_1.0.6 httr_1.4.7
[37] polyclip_1.10-7 abind_1.4-5
[39] compiler_4.4.0 bit64_4.0.5
[41] withr_3.0.1 BiocParallel_1.38.0
[43] viridis_0.6.5 DBI_1.2.3
[45] Rttf2pt1_1.3.12 ggforce_0.4.2
[47] R.utils_2.12.3 MASS_7.3-61
[49] rappdirs_0.3.3 DelayedArray_0.30.1
[51] tools_4.4.0 ape_5.8
[53] scatterpie_0.2.3 extrafontdb_1.0
[55] R.oo_1.26.0 glue_1.6.2
[57] nlme_3.1-166 GOSemSim_2.30.2
[59] grid_4.4.0 shadowtext_0.1.4
[61] reshape2_1.4.4 fgsea_1.30.0
[63] generics_0.1.3 gtable_0.3.5
[65] tzdb_0.4.0 R.methodsS3_1.8.2
[67] data.table_1.15.4 hms_1.1.3
[69] tidygraph_1.3.1 utf8_1.2.4
[71] XVector_0.44.0 ggrepel_0.9.5
[73] pillar_1.9.0 vroom_1.6.5
[75] yulab.utils_0.1.7 splines_4.4.0
[77] tweenr_2.0.3 treeio_1.28.0
[79] lattice_0.22-6 bit_4.0.5
[81] tidyselect_1.2.1 GO.db_3.19.1
[83] locfit_1.5-9.10 Biostrings_2.72.1
[85] gridExtra_2.3 graphlayouts_1.1.1
[87] stringi_1.8.4 UCSC.utils_1.0.0
[89] lazyeval_0.2.2 ggfun_0.1.6
[91] codetools_0.2-20 ggraph_2.2.1
[93] qvalue_2.36.0 ggplotify_0.1.2
[95] cli_3.6.3 systemfonts_1.1.0
[97] munsell_0.5.1 Rcpp_1.0.13
[99] png_0.1-8 XML_3.99-0.17
[101] parallel_4.4.0 blob_1.2.4
[103] DOSE_3.30.4 bitops_1.0-8
[105] viridisLite_0.4.2 tidytree_0.4.6
[107] scales_1.3.0 crayon_1.5.3
[109] rlang_1.1.4 fastmatch_1.1-4

若我们的教程对你有所帮助,请点赞+收藏+转发,大家的支持是我们更新的动力!!

往期部分文章

1. 最全WGCNA教程(替换数据即可出全部结果与图形)

推荐大家购买最新的教程,若是已经购买以前WGNCA教程的同学,可以在对应教程留言,即可获得最新的教程。(注:此教程也仅基于自己理解,不仅局限于此,难免有不恰当地方,请结合自己需求,进行改动。)


2. 精美图形绘制教程

3. 转录组分析教程

4. 转录组下游分析

小杜的生信筆記 ,主要发表或收录生物信息学教程,以及基于R分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!!

小杜的生信筆記
小杜的生信筆記,生信小白,初来乍到请多指教。 主要学习分享,转录组数据分析,基于R语言数据分析和绘制图片等,以及相关文献的分享。
 最新文章