当前位置: 首页 > news >正文

ggplot2 | GO barplot with gene list

1. 效果图

在这里插入图片描述

2. 代码

数据是GO的输出结果,本文使用的是 metascape 输出的excel挑选的若干行。

# 1. 读取数据
dat=read.csv("E:\\research\\scPolyA-seq2\\GO-APA-Timepoint\\test.csv", sep="\t")
head(dat)# 2. 选择所需要的列
dat.use=dat[, c("LogQvalue", "Description", "GroupID", "Symbols")]
# 如果只有Qvalue,则ggplot2中使用x=log10(Qvalue);
# GroupID是分组,不是必须的。主要用于区分颜色,一个类可以有多个term。

查看中间数据:

> head(dat.use, 2)LogQvalue                            Description    GroupID
1    -2.685      Thyroid hormone signaling pathway  1_Summary
2    -1.003 positive regulation of protein binding 10_SummarySymbols
1 ATP2A2,PFKP,RAF1,SLC9A1,HDAC3,NCOA2,MED13L,SIN3A,EGR2,NFKB1,THRAP3,CASP3,KMT2A,SLIT3,CCAR2,SLC9A3,MEF2D,TFAM,GBF1,BBS9,SGK1,TXN2,PI4KA,PEMT,PNPLA6,ACSL5
2                                               ABL1,PPP2CB,TIAM1,NMD3,ATP2A2,NFKB1,RAF1,OXSR1,NDFIP2,CCAR2,TAF3,UBLCP1,GBF1,DLC1,GLG1,STXBP3,SIN3A,JMJD1CSymbols2
1 ATP2A2,PFKP,RAF1,SLC9A1,HDAC3,NCOA2
2 ABL1,PPP2CB,TIAM1,NMD3,ATP2A2,NFKB1

继续:

# set y order
#dat.use$Description=factor(dat.use$Description)# 3.选择所需要的行 select rows to draw
cols=c("#D51F26","#00A08A","#F2AD00","#F98400","#5BBCD6")
dat.use=dat.use[1:length(cols), ]# 4.仅显示不超过n=5个基因
n=6 #最多保留的基因个数
dat.use$Symbols2=sapply(dat.use$Symbols, function(x){arr=strsplit(x, ",")[[1]]len=ifelse(length(arr)>n, n, length(arr));arr=arr[1:len]paste0(arr, collapse = ",")
}) |> as.character()# 5.画图
library(ggplot2)
ggplot(dat.use, aes(x=-LogQvalue, y = Description, fill = GroupID)) +#1. barplot of GO Q valuegeom_bar(stat ="identity", width =0.5) +geom_text(aes(x=0.1/5, #文字和y轴的缝隙y=Description, label=Description), size=4, #fontface="bold",hjust=0) +scale_fill_manual(values = cols)+ #bar plot fill colorscale_x_continuous(expand = c(0,0))+ #bar和y轴无间隔#2. add gene listgeom_text(data = dat.use,aes(x =0.1/5, #文字和y轴的缝隙y = Description, label = Symbols2, #基因列表color = GroupID),size =3.5,fontface ='italic',hjust =0,vjust =2.3) +scale_color_manual(values=cols) + #gene list text colors#3. theme and styletheme_classic(base_size = 14)+theme(axis.text.y = element_blank(), #no y title, ticks, textaxis.title.y = element_blank(),axis.ticks.y = element_blank(),axis.line = element_line(colour ='black', linewidth =1),axis.text.x = element_text(colour ='black', size =12),axis.ticks.x = element_line(colour ='black', linewidth = 1),axis.title.x = element_text(colour ='black', size =12),legend.position ="none")+ #no legendscale_y_discrete( #expand = c(0.2, 0), #为bar下的字符留空间,缺点是上面也有空间了expand=expansion(mult = c(0.2, 0)), #ggplot 3.5.1limits=rev( dat.use$Description)  #设置bar的顺序) + labs(x="-Log10(Qvalue)", title="Enrichment of xx")

Ref

  • https://mp.weixin.qq.com/s/h_x2Iz7FQdZWiT0WwY-9Eg

相关文章:

  • java 多核,多线程,分布式 并发编程的现状 :从本身的jdk ,到 spring ,到其它第三方。
  • ch09 题目参考思路
  • LVDS系列11:Xilinx Ultrascale系可编程输入延迟(一)
  • 第8章-4 查询性能优化2
  • U9C-SQL-调出单视图
  • 想更好应对突发网络与业务问题?需要一款“全流量”工具
  • SQL注入的绕过方式
  • MySQL基础关键_013_常用 DBA 命令
  • 三款实用电脑工具
  • 机器学习之静态推理与动态推理:选择适合你的策略
  • ACTF2025 - Web writeup
  • Femap许可使用数据分析
  • uniapp自定义导航栏搭配插槽
  • 学习threejs,使用Physijs物理引擎
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】电商数据分析案例-9.3 商品销售预测模型
  • C++中volatile关键字详解
  • Ubuntu通过源码编译方式单独安装python3.12
  • 高并发内存池(二):项目的整体框架以及Thread_Cache的结构设计
  • Starrocks 的 ShortCircuit短路径
  • 橡胶制品行业质检管理的痛点 质检LIMS如何重构橡胶制品质检价值链
  • 罕见沙尘再度入川,官方:沙尘传输高度达到平流层,远超以往
  • 铲屎官花5万带猫狗旅行,宠旅生意有多赚?
  • 2024年上市公司合计实现营业收入71.98万亿元
  • 越秀地产前4个月销售额约411.2亿元,达年度销售目标的34.1%
  • 44岁街舞运动推广者、浙江省街舞运动协会常务理事钟永玮离世
  • 城管给商户培训英语、政银企合作纾困,上海街镇这样优化营商环境