什么是倾斜45度的火山图?

news2024/11/15 19:48:40

一位老师聊起火山图(Volcano plot | 别再问我这为什么是火山图 (在线轻松绘制)),说见过倾斜45度的类似图,可否演示怎么画?想了下,可能是下面这种图,绘起来看看。

图片

检查和安装包

a = rownames(installed.packages())
if (!requireNamespace("BiocManager", quietly = TRUE))
  install.packages("BiocManager", repos = site)

a = rownames(installed.packages())

install_bioc <-
  c(
    "egg",
    "ggpubr",
    "ggplot2"
  )

for (i in install_bioc) {
  if (!i %in% a)
    BiocManager::install(i, update = F)
}

if (!"ImageGP" %in% a){
  # devtools::install_github("Tong-Chen/ImageGP")
  devtools::install_git("https://gitee.com/ct5869/ImageGP.git")
}

library(ImageGP)
library(ggplot2)
library(ggpubr)
library(egg)

读入数据并标记差异基因

数据是基于DESeq2分析的差异基因数据。

file <- "data/ehbio.simplier.DESeq2.trt._vs_.untrt.results.txt"

diffexpr <- sp_readTable(file, row.names=1)

# 做一个log转换
diffexpr$trt <- log2(diffexpr$trt+1)
diffexpr$untrt <- log2(diffexpr$untrt+1)

head(diffexpr)

##                      trt     untrt baseMean log2FoldChange    pvalue      padj
## ENSG00000152583 10.88130  6.354646  983.042          4.546 1.219e-91 2.149e-87
## ENSG00000189221 12.09256  8.706410 2391.559          3.387 9.955e-61 8.779e-57
## ENSG00000179094 10.40316  7.343044  757.249          3.065 2.435e-54 1.432e-50
## ENSG00000116584 10.50370 11.567470 2242.427         -1.064 3.957e-49 1.745e-45
## ENSG00000120129 12.55314  9.579082 3386.426          2.975 1.930e-48 6.807e-45
## ENSG00000134686 12.04738 10.587715 2884.847          1.460 1.846e-45 5.427e-42

标记差异基因

diffexpr$level <- ifelse(diffexpr$padj<0.05, 
                         ifelse(diffexpr$log2FoldChange>=1, "trt up", 
                                ifelse(diffexpr$log2FoldChange<=-1, "untrt up", "NoSig")),"NoSig")
head(diffexpr)

##                      trt     untrt baseMean log2FoldChange    pvalue      padj    level
## ENSG00000152583 10.88130  6.354646  983.042          4.546 1.219e-91 2.149e-87   trt up
## ENSG00000189221 12.09256  8.706410 2391.559          3.387 9.955e-61 8.779e-57   trt up
## ENSG00000179094 10.40316  7.343044  757.249          3.065 2.435e-54 1.432e-50   trt up
## ENSG00000116584 10.50370 11.567470 2242.427         -1.064 3.957e-49 1.745e-45 untrt up
## ENSG00000120129 12.55314  9.579082 3386.426          2.975 1.930e-48 6.807e-45   trt up
## ENSG00000134686 12.04738 10.587715 2884.847          1.460 1.846e-45 5.427e-42   trt up

基于ImageGP绘图

p <- sp_scatterplot(diffexpr, xvariable = "trt", yvariable = "untrt", 
               color_variable = "level",
               color_variable_order = c("NoSig","trt up", "untrt up"),
               manual_color_vector = c("grey","firebrick","dodgerblue"),
               legend.position = c(0.8,0.3)) + coord_fixed(1)
p

图片

到这满足需求了,又有老师说能不能加上数据分布展示?

拼上Marginal plot

xplot <- ggplot(diffexpr, aes(x=trt)) + geom_histogram(fill="firebrick") +
  theme_classic() + 
  theme(axis.line.x=element_blank(), 
        axis.ticks.x=element_blank(), 
        axis.text.x = element_blank(), 
        axis.title.x = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border = element_blank(),
        panel.background = element_blank(),
        legend.title = element_blank(),
        legend.position = c(0.75,0.85),
        #legend.title = element_text(size = 5), 
        legend.text  = element_text(size = 8),
        legend.key.size = unit(0.5, "lines"),
        legend.spacing = unit(0.3, "cm"),
  ) + ylab("Density")
xplot

图片

yplot <- ggplot(diffexpr, aes(x=untrt)) + geom_histogram(fill="dodgerblue") +
  theme_classic() +
  theme(axis.line.y=element_blank(),  
        axis.ticks.y=element_blank(), 
        axis.text.y = element_blank(), 
        axis.title.y=element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border = element_blank(),
        panel.background = element_blank(),
        legend.title = element_blank(),
        legend.position = c(0.7,0.8),
        #legend.title = element_text(size = 5), 
        legend.text  = element_text(size = 8),
        legend.key.size = unit(0.5, "lines"),
        legend.spacing = unit(0.3, "cm"),
        ) + ylab("Density") +
  rotate()
yplot

图片

合并起来

white <- ggplot() + theme_void()

egg::ggarrange(xplot, white, p, yplot, 
               widths=c(5,2),heights = c(2,5),padding=unit(0,"line"))

图片

也可以用现成的工具

用ggpubr绘制

ggscatterhist(diffexpr, x="trt", y="untrt", color="level",
              palette=c("grey","firebrick","dodgerblue"), margin.plot="histogram" )

图片

输出数据用在线工具绘制

见次条

高颜值免费在线绘图工具

http://www.ehbio.com/Cloud_Platform/front/#/analysis?page=b%27MTI%3D%27

sp_writeTable(diffexpr, file="DE_gene_label.txt")

数据和代码见 https://gitee.com/ct5869/shengxin-baodian/Plot

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

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

相关文章

零代码GIS场景视效升级:支持TMS/WMS/WMTS协议

首先和大家聊聊为什么现在很多人都在追求GIS场景的视效提升。第一是因为GIS场景本身需要包含多种自然信息&#xff0c;越是优秀的视觉效果&#xff0c;就越能直观反应出真实的地理信息&#xff0c;增强系统的实用性&#xff1b;第二则是因为能够极大降低系统的使用门槛&#xf…

MinIO使用基础教程

MinIO使用基础教程 一、背景二、快速安装2.1 虚拟机安装2.2 Windows安装2.2.1 下载MinIO服务器2.2.2 启动 MinIO Server2.2.3 通过浏览器访问MinIO服务控制台 三、使用介绍3.1 创建存储桶3.2 上传和下载文件3.3 设置文件公开访问 四、实战SpringBoot Minio实现文件上传和查询五…

2024春秋杯网络安全联赛夏季赛Crypto(AK)解题思路及用到的软件

2024春秋杯网络安全联赛夏季赛Crypto(AK) 2024春秋杯网络安全联赛夏季赛Crypto解题思路以及用到的软件 所有题用到的软件 1.vm(虚拟机kali)和Ubuntu&#xff0c;正常配置即可B站有很多。 2.Visual Studio Code(里面要配置python&#xff0c;crypto库和Sagemath数学软件系统S…

uni-app框架+vue 实现上拉加载和下拉刷新功能

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;我是码喽的自我修养&#xff01;今天给大家分享uni-app框架vue实现上拉加载和下拉刷新功能&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到带大家&#xff0…

1. kubernetes核心组件

kubernetes核心组件 一、kubernetes概述1、kubernetes是什么2、kubernetes作用/优势 二、kubernetes核心组件1、节点类型2、核心组件2.1 Master节点的组件2.2 Node节点的组件 3、k8s创建容器的流程 一、kubernetes概述 1、kubernetes是什么 由google公司基于go语言开发的集群…

YOLOv8预测时报错ValueError

【问题描述】执行YOLOv8预测代码时&#xff1a; # 导入训练好的权重文件做预测 from ultralytics import YOLO# Load a pretrained YOLOv8n model model YOLO("/data/yolov8/runs/detect/train6/weights/best.pt")# Run inference on bus.jpg with arguments model…

拆分盘理财模式:深度剖析与理性投资

一、新型理财视角&#xff1a;拆分盘的重新定义 拆分盘&#xff0c;这一投资概念常被包装为“稳健增长”的代名词&#xff0c;尤其在网络金融领域。它本质上并非传统股市中的股票&#xff0c;而是一种基于会员增长与资金流动的理财机制。其核心在于&#xff0c;通过不断吸纳新…

java算法day20

java算法day20 701.二叉搜索树中的插入操作450.删除二叉搜索树中的节点108 将有序数组转换为二叉搜索树 本次的题目都是用递归函数的返回值来完成&#xff0c;多熟悉这样的用法&#xff0c;很方便。 其实我感觉&#xff0c;涉及构造二叉树的题目&#xff0c;用递归函数的返回值…

2024 年 100 大数据科学面试问答

2024 年 100 大数据科学面试问答 一、说明 数据科学是一个快速发展的领域&#xff0c;它正在改变组织根据数据理解和做出决策的方式。因此&#xff0c;公司越来越多地寻求聘请数据科学家来帮助他们理解数据并推动业务成果。这导致了对数据科学家的高需求&#xff0c;这些职位的…

TikTok矩阵:从0到百万粉丝的秘密!

在TikTok这个充满活力与创意的短视频平台上&#xff0c;每一位创作者都怀揣着成为耀眼明星的梦想。如何让自己的作品脱颖而出&#xff0c;吸引并留住万千粉丝的目光&#xff0c;成为了每一位创作者亟待解决的问题。此时&#xff0c;TikTok矩阵策略便如同一盏明灯&#xff0c;照…

【BES2500x系列 -- RTX5操作系统】系统启动流程 -- boot loader概念讲解 --(九)

&#x1f48c; 所属专栏&#xff1a;【BES2500x系列】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f49…

力扣高频SQL 50题(基础版)第七题

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第七题1068. 产品销售分析 I题目说明思路分析实现过程准备数据&#xff1a;实现方式&#xff1a;结果截图:总结&#xff1a; 力扣高频SQL 50题&#xff08;基础版&#xff09;第七题 1068. 产品销售分析 I 题目说明 …

mysql + Oracle

eg627. 变更性别 Salary 表&#xff1a; ----------------------- | Column Name | Type | ----------------------- | id | int | | name | varchar | | sex | ENUM | | salary | int | ----------------------- id 是这个表…

eclipse 没有war file 选项 不能导入和导出war包

1 eclipse打包war,项目右键 2 安装Web和Java EE插件, 在Eclipse中选择Help菜单&#xff0c;然后选择Install New Software。在Work with下拉菜单中选择All Available Sites&#xff0c;然后选择Web, XML, Java EE and OSGi Enterprise Development进行安装。完成安装后&#xf…

海康视频WEB插件

引入相关依赖 index.html <script src"/video/web-control_1.2.5.min.js"></script> <script src"/video/jquery-1.12.4.min.js" type"text/javascript"></script> <script src"/video/jsencrypt.min.js" …

使用LSTM完成时间序列预测

c 在本教程中&#xff0c;我们将介绍一个简单的示例&#xff0c;旨在帮助初学者入门时间序列预测和 PyTorch 的使用。通过这个示例&#xff0c;你可以学习如何使用 LSTMCell 单元来处理时间序列数据。 我们将使用两个 LSTMCell 单元来学习从不同相位开始的正弦波信号。模型在…

黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day4 重置版 全网最全最快

你好,我是Qiuner. 为帮助别人少走弯路和记录自己编程学习过程而写博客 这是我的 github https://github.com/Qiuner ⭐️ gitee https://gitee.com/Qiuner &#x1f339; 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 &#x1f604; (^ ~ ^) 想看更多 那就点个关注吧 我会…

python3.10.4——windows环境安装

python下载官网&#xff1a;https://www.python.org/downloads/ 如果安装在C盘&#xff0c;需要右键→选择“以管理员身份运行” 勾选2个按钮&#xff0c;选择自定义安装 全部选择&#xff0c;点击Next 更改安装路径 命令行检查python是否安装成功&#xff1a; 出现版本号说明…

通俗地理解主动元数据管理

元数据管理&#xff0c;是企业开展数据管理的核心基础&#xff0c;内容涉及元数据的创建&#xff0c;确定需要捕获哪些元数据&#xff0c;通过哪些工具和流程进行创建&#xff0c;继而将元数据妥善存储&#xff0c;保障安全性和可访问性&#xff0c;并不断更新维护&#xff0c;…

vue3前端开发-小兔鲜项目-使用逻辑函数拆分业务模块

vue3前端开发-小兔鲜项目-使用逻辑函数拆分业务模块&#xff01;其实就是把一些单独的业务代码组成一个js文件。抽离出去后&#xff0c;方便后面的维护。 如图&#xff0c;在一级分类下面新建一个文件夹。composables里面新建2个js文件。 分别封装之前的分类&#xff0c;和ban…