零基础入门转录组数据分析——绘制差异火山图

零基础入门转录组数据分析——绘制差异火山图


差异分析的火山图(Volcano Plot)在生物信息学数据分析中,特别是在基因表达差异分析中,是一个非常直观和有用的工具。

本教程将从导入的数据结构开始,一步步带大家在R中绘制好看的火山图,最后对火山图进行解读,确保读者理解代码的同时学会解读火山图里的每个元素所代表的意思。

首先来看一下最终的火山图长啥样:
在这里插入图片描述



火山图的构建基于两个主要的度量指标:

基因表达对数2倍变化(Log2FoldChange):这个指标衡量了基因在不同组别之间的表达水平变化。正值表示基因表达上调,负值表示表达下调。

统计显著性(p.value/p.adj):这个指标是基因表达变化的p值,用于评估观察到的效应(如基因表达的变化)是否可能是由于随机误差引起的,通常认为P < 0.05则结果是显著的,并且更小的p.value/p.adj意味着变化更显著。

注:绘制差异火山图需要用到差异分析的结果

差异分析参考之前的教程:生信数据分析——limma差异分析和生信数据分析——DESeq2差异分析


本项目以GSE203346数据集(高通量测序数据)展示火山图绘制过程
实验分组:疾病组(18例),对照组(19例)
R版本:4.2.2
R包:tidyverse,lance,ggplot2,ggrepel	

废话不多说,代码如下:

设置工作空间:

rm(list = ls()) # 删除工作空间中所有的对象
setwd('/XX/XX/XX') # 设置工作路径
if(!dir.exists('./01_DEGs')){
   
  dir.create('./01_DEGs')
} # 判断该工作路径下是否存在名为01_DEGs的文件夹,如果不存在则创建,如果存在则pass
setwd('./01_DEGs/') # 设置路径到刚才新建的01_DEGs下

加载包:

library(tidyverse)
library(lance)
library(ggplot2)
library(ggrepel)

导入差异分析结果(limma/DESeq2都可以):

DEG <- read.csv('./GSE203346/DEG_all.csv', row.names = 1, check.names = F)
sig_diff <- read.csv('./GSE203346/DEG_sig.csv', row.names = 1, check.names = F)

DEG如下图所示, sig_diffDEG相似,只不过sig_diff少了那些没有显著差异的基因。
在这里插入图片描述

直接通过ggplot2绘制火山图(需要用到的是DEG中的log2FoldChangepvaluechange这三列)

ggplot(data = DEG, aes(x = log2FoldChange, y = -log10(pvalue), color = change)) +
  geom_point(size = 1.2, alpha = 0.4, na.rm = T)  # 设置点的大小和透明度

在这里插入图片描述

修改火山图中散点的颜色(上调基因用红色,下调基因用绿色,不显著基因用灰色表示)

ggplot(data = DEG, aes(x = log2FoldChange, y = -log10(pvalue), color = change)) +
  geom_point(size = 1.2, alpha = 0.4, na.rm = T)+  # 设置点的大小和透明度
  scale_color_manual(values = c("seagreen", "darkgray","firebrick3"))  # 设置颜色

在这里插入图片描述

给火山图横纵坐标加上阈值线:(横坐标是-0.5,0.5,纵坐标是-log10(0.05)

注:这个阈值线可以自己调整,要和差异分析的筛选阈值保持一直

ggplot(data = DEG, aes(x = log2FoldChange, y = -log10(pvalue), color = change)) +
  geom_point(size = 1.2, alpha = 0.4, na.rm = T)+  # 设置点的大小和透明度
  scale_color_manual(values = c("seagreen", "darkgray","firebrick3"))+ # 设置颜色
  geom_vline(xintercept = c(-0.5, 0.5), # 给x坐标轴的-0.5, 0.5处添加竖线
             lty = 4, # lty参数设置竖线的形式(直线,虚线等)
             col = "black", # 竖线颜色设置为黑色
             lwd = 0.4 # 设置线条的宽度
  ) +
  geom_hline(yintercept = -log10(0.05), # 给y坐标轴添加横线
             lty = 4, # lty参数设置竖线的形式(直线,虚线等)
             col = "black", # 竖线颜色设置为黑色
             lwd = 0.4 # 设置线条的宽度
  )

在这里插入图片描述

给火山图添加主题,并且设置x轴,y轴,标题以及副标题字体,大小和颜色(其中axis.text是坐标轴文本设置,axis.title是坐标轴标题设置,plot.title是标题设置

问:什么是主题?
答: ggplot2主题是一种系统,它允许对图像中的非数据元素进行精细的调整,而不会影响几何对象和标度等数据元素。主题不能改变图像的感官性质,但可以使图像更具美观,满足整体一致性的要求。

简单说:可以理解成是一个模板,这个模板对网格线、背景色、图片留白以及标题设置等都有统一的设定,可以在主题的基础上进一步修改字体,排版等一切元素

如下面代码中用到的就是theme_bw()这个主题,之后在theme()中修改主题的参数

ggplot(data = DEG, aes(x = log2FoldChange, y = -log10(pvalue), color = change)) +
  geom_point(size = 1.2, alpha = 0.4, na.rm = T)+  # 设置点的大小和透明度
  scale_color_manual(values = c("seagreen", "darkgray","firebrick3"))+ # 设置颜色
  geom_vline(xintercept = c(-0.5, 0.5), # 给x坐标轴的-0.5, 0.5处添加竖线
             lty = 4, # lty参数设置竖线的形式(直线&#x

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STL第二弹

3.5 stack容器 3.5.1 stack容器基本概念 概念&#xff1a; stack是一种先进后出的数据结构&#xff0c;他只有一个出口 栈中只有顶端的元素才可以被外界使用&#xff0c;因此栈不允许有遍历行为 3.5.2 stack常用接口 构造函数&#xff1a; stack stk; //stack采用模板类实…

Spark-Scala语言实战(7)

在之前的文章中&#xff0c;我们学习了如何在IDEA中导入jars包&#xff0c;并做了一道例题&#xff0c;了解了RDD。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢…

conda使用记录

linux 使用conda创建新一个新的python环境过程 conda create -n recommendation_env python3.8.18 # 指定python版本 conda env list # 查看所有的环境 conda activate recommendation_env # 激活创建的新环境 pip install flask # 安装依赖 或者 pip install flask版本号 或者…

XUbuntu22.04之Typora快捷键Ctrl+5不生效问题(二百二十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

5、axios请求、动画、组件、路由重定向、UI组件

一、axios请求 Axios是一个基于Promise的HTTP状态库&#xff0c;封装ajax。ajax包含axios安装 npm install axios 引入 import axios form “axios” 1、get请求 <script> // 1.本页面引入 import axios from "axios";data() {return {imgSrc: ""…

Springboot+vue的高校科研信息管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的高校科研信息管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#x…

C++:list类

list的介绍 1. list 是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代 2. list 的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向其前一个元素和后一个元素。 3. list 与 …

蓝桥杯物联网竞赛_STM32L071_13_定时器

CubeMx配置LPTIM: counts internal clock events 计数内部时钟事件 prescaler 预分频器 updata end of period 更新期末 kil5配置&#xff1a; 中断回调函数完善一下&#xff1a; void HAL_LPTIM_AutoReloadMatchCallback(LPTIM_HandleTypeDef *hlptim){if(cnt ! 10) cnt…

算法——动态规划:01背包

原始01背包见下面这篇文章&#xff1a;http://t.csdnimg.cn/a1kCL 01背包的变种&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 简化一…

数据结构:单调栈和单调队列

文章目录 一、单调栈1.1、栈的思想1.2、单调栈1.2.1、单调栈的基本应用&#xff1a;找出数组中每个元素右侧第一个更大的元素1.2.2、单调栈的基本应用&#xff1a;找出数组中每个元素左侧第一个更大的元素1.2.3、单调栈拓展1.2.4、单调栈LeetCode题单 二、单调队列2.1、队列的思…

【chemistry 5】脂类代谢、氨基酸代谢、核酸代谢

&#x1f31e;欢迎来到生物化学的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f4c6;首发时间&#xff1a;&#x1f339;2024年3月29日&…

Discourse 用户可以自己修改用户名吗

Discourse 是可以修改用户名的&#xff0c;但用户修改自己的用户名会有时间的限制。 这是因为根据官方的说法就是当用户修改用户名后可能会导致内容的失效等问题。 在默认的安装配置下&#xff0c;用户可以在完成注册后的 3 天自己对用户名进行修改。 3 天以后&#xff0c;用…

【CASS精品教程】CASS11台阶画法大全

文章目录 一、无边台阶二、有边台阶三、圆弧无边台阶四、U型台阶五、曲线U型台阶六、L型台阶一、无边台阶 点击【居民地】→【房屋附属】→【台阶】: 选择【两点边】即可。 两点边的绘制方法是,依次点击四个点,或者点击三个点后空格,注意台阶缺口(有白色线条)为下。 四…

HarmonyOS实战开发-Stage模型下Ability的创建和使用

介绍 本篇Codelab基于Stage模型&#xff0c;对Ability的创建和使用进行讲解。首先在课程中我们将带领大家使用DevEco Studio创建一个Stage模型Ability&#xff0c;并使用UIAbilityContext启动另一个Ability&#xff0c;然后借助Want&#xff0c;在Ability之间传递参数&#xf…

基于SpringBoot的“财务管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“财务管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体结构图 系统登录界面图 管理员功能界面图…

Deepspeed、ZeRO、FSDP、ZeRO-Offload、all reduce、reduce-scatter

Transformer为基础的大模型应该如何并行 数据并行。但是如果模型太大放不到一块卡上就没用了。为了解决把参数放到一块卡上的问题&#xff0c;演进出了论文Zero的思想&#xff0c;分为Zero-DP和Zero-R两部分。Zero-DP是解决Data parallel的问题&#xff0c;并行过程中内容不够…

Plecs电力电子仿真专业教程-软件操作

Plecs仿真软件基本操作方法&#xff1a; 从连线中引出线&#xff1a;Ctrl 鼠标左键 设置元件参数&#xff1a;双击元件&#xff0c;进行设置&#xff0c;若要显示参数&#xff0c;则在参数后的方框打勾。 CTRL E ---- 仿真参数设置 Ctrl T -----开始仿真 CtrlF …

如何检查电脑的最近历史记录?这里提供详细步骤

如果你怀疑有人在使用你的计算机,并且你想查看他们在做什么,下面是如何查看是否有访问内容的痕迹。 如何检查我的计算机的最近历史记录 要检查计算机的最近历史记录,应该从web浏览器历史记录开始,然后移动到文件。但是,可以修改或删除浏览器历史记录,也可以隐藏Windows…

Redis 和 Mysql 数据库数据如何保持一致性????

1、前言 我们在实际项目中经常会使用到Redis缓存用来缓解数据库压力&#xff0c;但是当更新数据库时&#xff0c;如何保证缓存及数据库一致性&#xff0c;一般我们采用延时双删策略。 目前系统中常用的做法是一个查询接口&#xff0c;先查询Redis&#xff0c;如果不存在则查询…

Vue——案例01(查询用户)

一、案例实现页面 二、案例实现效果 1. 查询效果 2. 年龄升序 3. 年龄降序 4. 原顺序 三、案例实现思路 1. 定义界面所需标签样式 <div id"app"><h2>查询用户:</h2><input type"text" placeholder"请输入名字"/><b…