R语言绘图

embedded/2025/1/19 7:37:14/

多组火山图

数据准备:

将CSV文件同一在一个路径下,用代码合并

确保文件列名正确

library(fs)
library(dplyr)
library(tidyr)
library(stringr)
library(ggplot2)
library(ggfun)
library(ggrepel)# 获取文件列表
file_paths <- dir_ls(path = "E:\\proteomic\\fuxian_bacteria\\multivolcano", pattern = "_DEG\\.csv$", full.names = T)
# 检查文件列表
print(file_paths)# 读取和处理数据
all_deg <- map(file_paths, function(x){# 检查文件扩展名,忽略大小写if (str_ends(str_to_lower(x), ".csv")) {cat("Processing file:", x, "\n") # 打印正在处理的文件名data <- read_delim(file = x, col_names = T, delim = ",")if (is.data.frame(data)) {group <- str_remove(basename(x), pattern = "_DEG.*")return(dplyr::mutate(data, group = group))} else {cat("Failed to read file:", x, "\n")return(NULL)}} else {cat("Skipping non-CSV file:", x, "\n")return(NULL)}
}) %>%compact() %>% # 移除列表中的 NULL 元素do.call(rbind, .)ggplot(data = all_deg) +geom_jitter(data = all_deg %>% dplyr::filter(change == "Normal"),aes(x = group, y = logFC, color = change, size = abs(logFC), alpha = abs(logFC)),width = 0.4) +geom_jitter(data = all_deg %>% dplyr::filter(change != "Normal"),aes(x = group, y = logFC, color = change, size = abs(logFC), alpha = abs(logFC)),width = 0.4) +geom_jitter(data = all_deg %>% dplyr::group_by(group) %>%dplyr::arrange(desc(abs(logFC))) %>%dplyr::slice_head(n = 15) %>%dplyr::ungroup() %>%na.omit(),aes(x = group, y = logFC, size = abs(logFC)),width = 0.4, shape = 21, fill = "#e77381") +geom_text_repel(data = all_deg %>% dplyr::group_by(group) %>%dplyr::arrange(desc(abs(logFC))) %>%dplyr::slice_head(n = 15) %>%dplyr::ungroup() %>%na.omit(),aes(x = group, y = logFC, label = SYMBOL)) +geom_tile(aes(x = group, y = 0, fill = group), height = 0.4) +geom_text(data = all_deg %>% dplyr::select(group) %>% dplyr::distinct(group, .keep_all = T),aes(x = group, y = 0, label = group), size = 6) +geom_hline(yintercept = c(-log2(1.5), log2(1.5))) +scale_y_continuous(limits = c(-5, 5)) +scale_size(range = c(1, 10)) +scale_alpha(range = c(0.1, 1)) +scale_color_manual(values = c("Up" = "#f46d43", "Normal" = "#bdbdbd", "Down" = "#3288bd")) +scale_fill_manual(values = c('#8dd3c7','#ffffb3','#bebada','#fb8072','#80b1d3')) +theme_bw() +theme(axis.text = element_text(color = "#000000", size = 12),axis.title = element_text(color = "#000000", size = 15),panel.grid = element_blank(),legend.background = element_roundrect(color = "#969696")) +labs(y = "log2(Fold Change)")


http://www.ppmy.cn/embedded/155164.html

相关文章

Redis 设计与实现:深入理解高性能缓存数据库

Redis 设计与实现&#xff1a;深入理解高性能缓存数据库 在当今数字化时代&#xff0c;数据处理和存储的高效性至关重要。Redis 作为一款广泛使用的高性能缓存数据库&#xff0c;以其出色的性能、丰富的数据结构和高可用性&#xff0c;成为众多开发者和企业的首选。在这篇文章…

Flutter(Dart)的集合类型List、Set 和 Map

在 Dart&#xff08;以及 Flutter&#xff09;中&#xff0c;List、Set 和 Map 是三种常用的集合类型&#xff0c;用于存储和管理多个数据项。每种类型都有其独特的特性和适用场景。下面将详细介绍这三种集合类型及其常用方法。 1. List (列表) List 是一种有序的集合&#x…

软硬件项目运维管理制度,安全运行维护管理手册(Word原件)

第一章 总则 第二章 运行维护组织架构 第一节 运行维护组织 第二节 职责分工 第三章 运行维护工作基本制度 第一节 故障管理 第二节 问题管理 第三节 变更管理 第四节 巡检管理 第五节 备份及日志管理 第六节 安全保密管理 运行维护管理的基本任务&#…

【华为路由/交换机的ftp文件操作】

华为路由/交换机的ftp文件操作 PC&#xff1a;10.0.1.1 R1&#xff1a;10.0.1.254 / 10.0.2.254 FTP&#xff1a;10.0.2.1 S1&#xff1a;无配置 在桌面创建FTP-Huawei文件夹&#xff0c;里面创建config/test.txt。 点击上图中的“启动”按钮。 然后ftp到server&#xff0c;…

Python学习(十三)什么是模块、模块的引入、自定义模块、常见的内置模块(math、random、os、sys、uuid、时间模块、加密模块)

目录 一、什么是模块&#xff1f;1.1 定义1.2 分类1.3 五种模块引入的方法1&#xff09;import 模块名&#xff08;全部引入&#xff09;2&#xff09;from 模块名 import 功能名&#xff08;部分引入&#xff09;3&#xff09;from 模块名 import *&#xff08;引入公共功能&a…

Ubuntu服务器折腾集

目录 Ubuntu 更改软件源Ubuntu 系统语言英文改中文windows 远程链接 Ubuntu 图形界面Windows 通过 openssh 连接 UbuntuUbuntu linux 文件权限Ubuntu 空闲硬盘挂载到 文件管理器的 other locationsUbuntu 开启 SMB 服务&#xff0c;并通过 windows 访问DockerseafileNextcloud…

《知识图谱:鸿蒙NEXT中人工智能的智慧基石》

在鸿蒙NEXT系统的人工智能应用中&#xff0c;知识图谱技术犹如一座智慧基石&#xff0c;为系统的智能化提供了强大的知识支撑&#xff0c;开启了更智能、更高效、更个性化的交互新时代。 提升语义理解能力 知识图谱以其结构化的知识表示方式&#xff0c;将各种实体和它们之间…

Linux《Linux简介与环境的搭建》

在学习了C或者是C语言的基础知识之后就可以开始Linux的学习了&#xff0c;现在Linux无论是在服务器领域还是在桌面领域都被广泛的使用&#xff0c;所以Linxu也是我们学习编程的重要环节&#xff0c;在此接下来我们将会花大量的时间在Linxu的学习上。在学习Linux初期你可以会像初…