3D火山图绘制教程

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

本期教程内容

**注:**本教程详细内容
Volcano3D绘制3D火山图

一、前言

火山图是做差异分析中最常用到的图形,在前面的推文中,我们也推出了好几期火山图的绘制教程,以及很多火山图的教程也可以参考。R语言绘制精美图形 | 火山图 | 学习笔记、各类差异基因火山图汇总 | 学习笔记等等。大家根据自己的需求绘制相关的火山图即可。

今天,我们学习使用volcano3D绘制3D火山图,我们会给出详细的绘图过程。

注意: 小杜的生信笔记分享的教程是结合自己的需求进行分享,难免会有错误或遗漏,望见谅!

二、GitHub网址

https://github.com/KatrionaGoldmann/volcano3D

三、 加载R包和数据

3.1 安装volcano3D包

### 安装volcano3D包
library(devtools)
#install_github("KatrionaGoldmann/volcano3D")### 或是使用以下方法进行安装
# repos = getOption("repos")
# repos["volcano3Ddata"] = "http://KatrionaGoldmann.github.io/volcano3Ddata"
# options(repos = repos)
#install.packages("volcano3Ddata")
library(volcano3Ddata)

3. 2 安装R包时报错问题处理

我自己在安装volcano3D1时出现的报错,安装不了。我开了VPN,但也是报错。后看了是如下的问题,volcano3D相关的包vctrs版本太低了,然后进行升级后即可安装。

3.3 加载数据包

devtools::install_github("KatrionaGoldmann/volcano3Ddata")

citation("volcano3D")

3.4 加载R包

library(volcano3D)
library(volcano3Ddata)# Basic DESeq2 set up
library(DESeq2)
library(ggplot2)
library(kableExtra)

3.5 数据展示

结合示例数据进行准备数据,基本与我们平时做差异分析数据保持一致,或是你直接使用DESep2做差异分析,使用其结果进行绘图。

citation("volcano3D")## 
## To cite package 'volcano3D' in publications use:
## 
##   Goldmann K, Lewis M (2020). _volcano3D: 3D Volcano Plots and Polar
##   Plots for Three-Class Data_.
##   https://katrionagoldmann.github.io/volcano3D/index.html,
##   https://github.com/KatrionaGoldmann/volcano3D.
## 
## A BibTeX entry for LaTeX users is
## 
##   @Manual{,
##     title = {volcano3D: 3D Volcano Plots and Polar Plots for Three-Class Data},
##     author = {Katriona Goldmann and Myles Lewis},
##     year = {2020},
##     note = {https://katrionagoldmann.github.io/volcano3D/index.html, https://github.com/KatrionaGoldmann/volcano3D},
##   }

data("syn_data")
data("syn_txi")

3.6 差异分析

创建数据集

counts <- matrix(rnbinom(n=3000, mu=100, size=1/0.5), ncol=30)
rownames(counts) <- paste0("gene", 1:100)
cond <- rep(factor(rep(1:3, each=5), labels = c('A', 'B', 'C')), 2)
resp <- factor(rep(1:2, each=15), labels = c('non.responder', 'responder'))
metadata <- data.frame(drug = cond, response = resp)
counts[1:10,1:5]

dds <- DESeqDataSetFromMatrix(counts, metadata, ~response)
res <- deseq_2x3(dds, ~response, "drug")


差异结果

head(res)


函数deseq_2x3()返回一个包含3个DESeq2对象的列表,其中包含3种药物中每一种的响应分析。这些响应与非响应差异表达式比较可以通过R软件包easylabel的easyVolcano()函数快速可视化,该软件包专为DESeq2和limma对象设计,并使用交互式。 R/发光界面。

#install.packages("easylabel")
library(easylabel)
df <- as.data.frame(res[[1]])  # results for the first drug  
easyVolcano(df)


deseq_2x3输出被传递给deseq_2x3_pole()以生成一个volc3d类对象用于绘图。因此,三维径向图和三维火山图简化了二乘三维分析的可视化,用一个单一的径向图或三维火山图取代了三个火山图。

# Generate polar object
obj <- deseq_2x3_polar(res)# 2d plot
radial_plotly(obj)# 3d plot
volcano3D(obj)


此图形可以手动选择方向,以及缩放。

四、绘制不同药理的图形

kable(table(syn_metadata$Pathotype), col.names = c("Pathotype", "Count"))syn_metadata$Pathotype <- factor(syn_metadata$Pathotype, levels = c('Lymphoid', 'Myeloid', 'Fibroid'))
##设置原始变量
dds <- DESeqDataSetFromTximport(txi = syn_txi, colData = syn_metadata, design = ~ Pathotype + Batch + Gender)##差异分析
dds_DE <- DESeq(dds)
##病理类型
dds_LRT <- DESeq(dds, test = "LRT", reduced = ~ Batch + Gender, parallel = TRUE)
#创建'volc3d' 数据集
res <- deseq_polar(dds_DE, dds_LRT, "Pathotype")
##绘制三维散点图
volcano3D(res)

五、构建一个3D shiny

构建一个shiny,也可以单独放在一个R脚本中
Volcano3D绘制3D火山图


往期文章:

1. 复现SCI文章系列专栏

2. 《生信知识库订阅须知》,同步更新,易于搜索与管理。

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

  • WGCNA分析 | 全流程分析代码 | 代码一

  • WGCNA分析 | 全流程分析代码 | 代码二

  • WGCNA分析 | 全流程代码分享 | 代码三

  • WGCNA分析 | 全流程分析代码 | 代码四

  • WGCNA分析 | 全流程分析代码 | 代码五(最新版本)


4. 精美图形绘制教程

  • 精美图形绘制教程

5. 转录组分析教程

转录组上游分析教程[零基础]

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

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

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

相关文章

Android——资源IDnonFinalResIds和“Attribute value must be constant”错误

一、异常描述 通过资源ID引用资源提示错误 Attribute value must be constant 二、解决方案 在根目录下的文件 gradle.properties 中添加如下配置&#xff0c;然后Sync Project android.nonFinalResIdsfalse 三、问题原因 android.nonFinalResIds 是Android开发中一个用于解…

此处不允许使用特性namespace

1.DOCTYPE 后面改成 mapper 2.PUBLIC一行中的Config改为Mapper 3.将下一行config变为小写的mapper <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.or…

交叉编译安装时报错 ./install.sh: 15: ./install.sh: Bad substitution

报错信息截图如下&#xff1a; 解决方法 vim install.sh #!/bin/sh -e 修改为 !/bin/bash -e重新执行 sudo ./install.sh 成功运行

【Java并发】聊聊线程池原理以及实际应用

线程其实对于操作系统来说是宝贵的资源&#xff0c;java层面的线程其实本质还是依赖于操作系统内核的线程进行处理任务&#xff0c;如果频繁的创建、使用、销毁线程&#xff0c;那么势必会非常浪费资源以及性能不高&#xff0c;所以池化技术&#xff08;数据库连接池、线程池&a…

畅谈Linux在小型微型企业中的应用

在这篇文章里我们讨论和畅谈一下linux系统在小微型企业中的应用&#xff0c;为什么会写这篇文章呢&#xff1f;因为在平时的工作中&#xff0c;认识的一些做小微型企业的朋友&#xff0c;他们经常找我咨询或是去解决一些平时工作中的IT相关的问题&#xff0c;那么小微型企业中的…

相同结构体不同类型转换

缘由&#xff1a; 最近开发上遇到一个问题&#xff0c;通过grpcgateway 处理后的int64&uint64类型数据均转换成了字符串类型&#xff0c;本身服务于前端&#xff0c;没有任何问题。但是 项目部署现场后&#xff0c;发现需要两套环境&#xff0c;那么就出现一个问题&#x…

2022 年十大 JavaScript 框架

2022 年十大 Web 应用开发 JavaScript 框架。 React.js jQuery Express Angular Vue.js Angular.js Svelte Next.js Ember.js Meteor React.js React.js 于 2013 年由 Meta(Facebook 前身) 推出&#xff0c;是一款开源的、免费的 JavaScript 库。React.js 被用于开…

C++中的map和set的使用

C中的map详解 关联式容器键值对树形结构的关联式容器set的使用1. set的模板参数列表2. set的构造3. set的迭代器4. set的容量5. set修改操作6. set的使用举例 map1. map的简介2. map的模板参数说明3. map的构造4. map的迭代器5. map的容量与元素访问6. map的元素修改 multimap和…

Linux vim操作教程(vim 基操、vim替换和查找、 vim改变文本颜色、判断和循环语句)

vim 基操 vim 是一个强大的文本编辑器,常用于在终端环境下编辑文件。下面是一些常用的 vim 操作: 打开文件:在终端中输入 vim 文件名 来打开一个文件,如果文件不存在,则会创建一个新文件。 模式切换: 按下 i 进入插入模式,在该模式下可以输入和编辑文本。按下 Esc 键返…

python单例模式

单例模式是一种创建型设计模式&#xff0c;它保证一个类仅有一个实例&#xff0c;并提供一个全局访问点。 在 Python 中&#xff0c;可以使用以下几种方式来创建单例模式&#xff1a; 使用 __new__ 方法 在 Python 中&#xff0c; __new__ 方法是一个类方法&#xff0c;它在…

msvcp120.dll丢失是什么意思,哪个修复方法最简单

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“找不到msvcp120.dll”。这个错误通常发生在运行某些程序或游戏时&#xff0c;它会导致程序无法正常启动或运行。那么&#xff0c;这个错误提示到底是什么意思呢&#xff1f;为了解决这个问…

深入了解Java8新特性-日期时间API_LocalDate类

阅读建议 嗨&#xff0c;伙计&#xff01;刷到这篇文章咱们就是有缘人&#xff0c;在阅读这篇文章前我有一些建议&#xff1a; 本篇文章大概12000多字&#xff0c;预计阅读时间长需要10分钟。本篇文章的实战性、理论性较强&#xff0c;是一篇质量分数较高的技术干货文章&…

【iOS】数据持久化(一)之Plist文件、Preference(NSUserDefaults类)

目录 什么是Plist文件&#xff1f;plist可以存储哪些数据类型plist文件数据的读取与存储 Perference&#xff08;NSUserDefaults&#xff09;使用方法registerDefaults: 方法的使用 什么是Plist文件&#xff1f; Plist文件&#xff08;属性列表&#xff09;是将某些特定的类&a…

python运行hhblits二进制命令的包装器类

hhblits 是 HMM-HMM&#xff08;Hidden Markov Model to Hidden Markov Model&#xff09;比对方法的一部分&#xff0c;也是 HMMER 软件套件中的工具之一。与 hhsearch 类似&#xff0c;hhblits 也用于进行高效的蛋白质序列比对&#xff0c;特别擅长于检测远缘同源性。 hh-su…

筑牢思想防线——建行驻江门市分行纪检组举办2023年清廉合规大讲堂

为推动廉洁教育打通“最后一公里”&#xff0c;近日&#xff0c;建行驻江门市分行纪检组举办江门市分行2023年清廉合规大讲堂。 本次大讲堂检察官结合一线办案经历&#xff0c;从防范化解金融风险、预防金融从业人员犯罪等方面对全辖员工进行了深入浅出地的讲解&#xff0c;引导…

代码随想录算法训练营第五十二天|1143.最长公共子序列 1035.不相交的线 53. 最大子序和

文档讲解&#xff1a;代码随想录 视频讲解&#xff1a;代码随想录B站账号 状态&#xff1a;看了视频题解和文章解析后做出来了 1143.最长公共子序列 class Solution:def longestCommonSubsequence(self, text1: str, text2: str) -> int:dp [[0] * (len(text2) 1) for _ i…

C++——stack和queue

目录 stack的介绍和使用 stack的使用 queue的介绍和使用 queue的使用 容器适配器 deque的介绍 deque的缺陷 priority_queue的介绍和使用 priority_queue的使用 仿函数 反向迭代器 stack的介绍和使用 在原来的数据结构中已经介绍过什么是栈了&#xff0c;再来回顾一下…

视频监控平台EasyCVR+智能分析网关+物联网,联合打造智能环卫监控系统

一、背景介绍 城市作为人们生活的载体&#xff0c;有着有无数楼宇和四通八达的街道&#xff0c;这些建筑的整洁与卫生的背后&#xff0c;是无数环卫工作人员的努力。环卫工人通过清理垃圾、打扫街道、清洗公共设施等工作&#xff0c;保持城市的整洁和卫生&#xff0c;防止垃圾…

【机器学习 | 白噪声检验】检验模型学习成果 检验平稳性最佳实践,确定不来看看?

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

C++ Day09 容器

C-STL01- 容器 引入 我们想存储多个学员的信息 , 现在学员数量不定 通过以前学习的知识 , 我们可以创建一个数组存储学员的信息 但是这个数组大小是多少呢 ? 过大会导致空间浪费 , 小了又需要扩容 对其中的数据进行操作也较为复杂 每次删除数据后还要对其进行回收等操作…