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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/82320.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习搭子,秘塔AI搜索

什么是秘塔AI搜索 《秘塔AI搜索》的网址:https://metaso.cn/ 功能:AI搜索和知识学习,其中学习部分是亮点,也是主要推荐理由。对应的入口:https://metaso.cn/study 推荐理由 界面细节做工精良《今天学点啥》板块的知…

【C语言】--指针超详解(三)

目录 一.数组名的理解 二.使用指针访问数组 三.一维数组传参的本质 四.冒泡排序 五.二级指针 六.指针数组 6.1--指针数组的定义 6.2--指针数组模拟二维数组 🔥个人主页:草莓熊Lotso的个人主页 🎬作者简介:C方向学习者 &…

Linux防火墙

1.防火墙是一种位于内部网络与外部网络之间的网络安全系统,它依照特定的规则,允许或限制传输的数据通过,以保护内部网络的安全。以下从功能、分类、工作原理等方面为你详细讲解: 功能访问控制:这是防火墙最主要的功能。…

嵌入式培训之C语言学习完(十七)结构体、共用体、枚举、typedef关键字与位运算

目录 一、结构体(struct关键字) (一)声明一个结构体数据类型 (二)结构体的成员初始化与赋值 a、结构体变量赋值 b、结构体成员初始化 c、结构体的定义形式 (三)考点&#xff…

Python字典:数据操作的核心容器

在Python编程生态中,字典(dict)是最常用且功能强大的内置数据结构之一。它以键值对(Key-Value Pair)的形式存储数据,为快速查找、灵活映射关系提供了天然支持。无论是数据清洗、算法实现还是Web开发&#x…

按位宽提取十六进制值

需求:给出一个十六进制值,要求提取high和low位之间的值。比如16ha0f0,这是一个16bit宽的十六进制数0xa0f0,提取[15:12]范围内的值。 def extract_bits(value, high, low):"""从 value 中提取 [high:low] 位的值:p…

LeRobot 项目部署运行逻辑(六)——visualize_dataset_html.py/visualize_dataset.py

可视化脚本包括了两个方法:远程下载 huggingface 上的数据集和使用本地数据集 脚本主要使用两个: 目前来说,ACT 采集训练用的是统一时间长度的数据集,此外,这两个脚本最大的问题在于不能裁剪,这也是比较好…

SSTI模版注入

1、概念 SSTI是一种常见的Web安全漏洞,它允许攻击者通过注入恶意模板代码,使服务器在渲染模板时执行非预期的操作。 (1)渲染模版 至于什么是渲染模版:服务器端渲染模板是一种Web开发技术,它允许在服务器端…

关于点胶机的精度

一、精度: 1:X/y轴定位精度常通在5个丝左右,Z轴在3个丝左右, 如果采用伺服电机丝杆配置,可提升至于个2丝左右。 2:胶水控制精度:通过喷阀驱动器,气压等参数,实现胶量控制&#xf…

gitee推送更新失败问题记录:remote: error: hook declined to update refs/heads/master

问题描述: gitee推送更新时,提示: 解决方法: 登录Gitee,进入【个人主页】 点击【个人设置】 更改邮箱的配置,如下: 更改“禁止命令行推送暴露个人邮箱”,将其关闭:

Java如何获取电脑分辨率?

以下是一个 Java 程序示例,用于获取电脑的主屏幕分辨率: import java.awt.*; public class ScreenResolutionExample { public static void main(String[] args) { // 获取默认的屏幕设备 GraphicsDevice device GraphicsEnvironm…

WPF 3D图形编程核心技术解析

一、三维坐标系系统 WPF采用右手坐标系系统,空间定位遵循: X 轴 → 右 Y 轴 → 上 Z 轴 → 观察方向 X轴 \rightarrow 右\quad Y轴 \rightarrow 上\quad Z轴 \rightarrow 观察方向 X轴→右Y轴→上Z轴→观察方向 三维坐标值表示为 ( x , y , z ) (x, y,…

【库(Library)、包(Package)和模块(Module)解析】

在Python中,**库(Library)、包(Package)和模块(Module)**是代码组织的不同层级,而import语句的导入行为与它们密切相关。以下是详细对比和解释: 📦 1. 核心概…

裸机上的 printf:在无操作系统环境下构建 C 标准库

在嵌入式开发和底层系统编程领域,裸机开发是一项极具挑战性但又至关重要的任务。想象一下,在没有操作系统支持的情况下,让 C 语言的标准库函数,如printf正常工作,这听起来是不是很有趣又充满挑战?今天&…

基于STM32F103的智能机械臂识别与控制项目(课件PPT+源代码)

以下是基于 STM32F103 的智能机械臂识别与控制项目的详细介绍: 项目概述 该项目以 STM32F103 为核心控制器,结合多种传感器和技术,实现了机械臂的智能识别与控制功能,可完成仓库货物的识别、搬运等任务,并支持多种控…

Codeforces Round 1023 (Div. 2)

Dashboard - Codeforces Round 1023 (Div. 2) - Codeforces 一个构造问题&#xff0c;我把最大的数放在一个数组&#xff0c;其余数放在另一个数组&#xff0c;就能保证gcd不同 来看代码&#xff1a; #include <bits/stdc.h> using namespace std;int main() {int t;ci…

6.01 Python中打开usb相机并进行显示

本案例介绍如何打开USB相机并每隔100ms进行刷新的代码,效果如下: 一、主要思路: 1. 打开视频流、读取帧 self.cam_cap = cv2.VideoCapture(0) #打开 视频流 cam_ret, cam_frame = self.cam_cap.read() //读取帧。 2.使用定时器,每隔100ms读取帧 3.显示到Qt的QLabel…

JVM——即时编译

分层编译模式&#xff1a;动态平衡启动速度与执行效率 分层编译是现代JVM&#xff08;如HotSpot、GraalVM&#xff09;实现高性能的核心策略之一&#xff0c;其核心思想是根据代码的执行热度动态选择不同的编译层次&#xff0c;实现启动速度与运行效率的最佳平衡。以HotSpot虚…

Auto DOP:让并行执行实现智能调优 | OceanBase 实践

随着数据量的迅速增长&#xff0c;企业数据库往往面临着一个困局&#xff1a;复杂的分析查询需要充分的资源来保证性能&#xff0c;但过多增加并行执行又会造成资源竞争&#xff0c;影响系统稳定性。传统基于DBA人工干预的并行度调节机制&#xff0c;既低效又难以适应动态变化的…

【区块链】Uniswap之滑点(Slippage)

一、滑点是什么&#xff1f; 滑点&#xff08;Slippage&#xff09;是指你下单预期价格和最终成交价格之间的差距。 在 DEX 中&#xff0c;你的交易会影响池子的价格&#xff08;AMM机制&#xff09;&#xff0c;所以&#xff1a; 下单越大&#xff0c;滑点越大&#xff1b;…