跟着iMeta学做图 | 冲击图展示菌群随盐度的变化

news2024/11/18 5:56:36

本文代码已经上传至https://github.com/iMetaScience/iMetaPlot如果你使用本代码,请引用:Changchao Li. 2023. Destabilized microbial networks with distinct performances of abundant and rare biospheres in maintaining networks under increasing salinity stress. iMeta 1: e79. https://onlinelibrary.wiley.com/doi/10.1002/imt2.79

代码翻译及注释:农心生信工作室

写在前面

冲击图(alluvial diagram)是流程图(flow diagram)的一种,最初开发用于代表网络结构的时间变化。在微生物群落分析中可以用来展示不同分类学水平微生物的丰度及其从属关系,利用R语言做冲击图实现菌群相对丰度的变化是生信分析中较常见的。

本期我们挑选2023年1月9日刊登在iMeta上的Destabilized microbial networks with distinct performances of abundant and rare biospheres in maintaining networks under increasing salinity stress,以文章中Figure 1E为例,讲解和探讨如何用冲击图展示菌群随盐度的变化,先上原图:

图片

图片

代码、数据和结果下载,请访问https://github.com/iMetaScience/iMetaPlot/tree/main/230407ggalluvial

接下来,我们将通过详尽的代码逐步拆解原图,最终实现对原图的复现。

R包检测和安装

01

安装核心R包ggalluvial以及一些功能辅助性R包,并载入所有R包。

library(reshape2) # 重塑数据框的包,可以实现长数据和宽数据之间的转化# 加载ggalluvial包(绘图本图所用关键R包),基于ggplot2的ggalluvial包可用来绘制冲击图if (!require("ggalluvial"))  install.packages("ggalluvial")library(ggalluvial)library(ggsci) # ggsci包含期刊或软件的经典配色,可用于ggplot2()配色

读取数据

02

读取绘制所需数据并进行必要转换。

# 读取绘制数据,行为菌的名称,列为不同盐度,表中数据为菌的相对丰度d1e0 <- read.csv("ProClass.csv") # 示例数据可在GitHub上获取
# 将宽数据拉长,转化后"自变量"列为variable,代表梯度不同的盐度,"因变量"列为Value,代表菌的相对丰度d1e = as.data.frame(melt(d1e0, id.vars = c("phylumpro"))) # id.vars=c()用于指定要保留的字段head(d1e) # 列出前几行看看数据转化后长什么样

绘制冲击图

03

基础图形绘制。

# 预设渐变色taxcol <- c("#64A4CC", "#9CCEE3", "#C7E5DB", "#ECF6C8", "#FEEDAA",            "#FDC980", "#F89D59", "#E75B3A", "#D7191C")p1e <- ggplot(data=d1e,aes(x = variable, y = value, alluvium = phylumpro))+ # alluvium设置冲积层,在这里将菌(phylumpro)设置冲积层  geom_alluvium(aes(fill = phylumpro), alpha = 1)+ # 画冲击图,按菌(phylumpro)进行颜色填充  scale_fill_manual(values = taxcol) # 对冲积层填充颜色p1e

图片

04

对图形进行细节美化

p1e1 <- p1e +   theme_minimal() + #预设主题  theme(axis.text.x = element_blank(), # 因预期x轴另外加一条渐变的图形表示,在这里取消x轴        panel.grid.minor = element_blank(), # 移除图中的网格        panel.grid.major = element_blank(), # 移除图中的网格        panel.spacing.x = element_blank()) +  xlab("Salinity")+ # 设置x轴标题  ylab("Relative abundance (%)")# 设置Y轴标题p1e1

图片

完整代码

library(reshape2) # 重塑数据框的包,可以实现长数据和宽数据之间的转化# 加载ggalluvial包(绘图本图所用关键R包),基于ggplot2的ggalluvial包可用来绘制冲击图if (!require("ggalluvial"))  install.packages("ggalluvial")library(ggalluvial)library(ggsci) # ggsci包含期刊或软件的经典配色,可用于ggplot2()配色
# 读取绘制数据,行为菌的名称,列为不同盐度,表中数据为菌的相对丰度d1e0 <- read.csv("ProClass.csv") # 示例数据可在GitHub上获取# 将宽数据拉长,转化后"自变量"列为variable,代表梯度不同的盐度,"因变量"列为Value,代表菌的相对丰度d1e = as.data.frame(melt(d1e0, id.vars = c("phylumpro"))) # id.vars=c()用于指定要保留的字段
# 预设渐变色并绘制冲击图taxcol <- c("#64A4CC", "#9CCEE3", "#C7E5DB", "#ECF6C8", "#FEEDAA",            "#FDC980", "#F89D59", "#E75B3A", "#D7191C")p1e <- ggplot(data=d1e,aes(x = variable, y = value, alluvium = phylumpro))+ # alluvium设置冲积层,在这里将菌(phylumpro)设置冲积层  geom_alluvium(aes(fill = phylumpro), alpha = 1)+ # 画冲击图,按菌(phylumpro)进行颜色填充  scale_fill_manual(values = taxcol)+ # 对冲积层填充颜色  theme_minimal() + #预设主题  theme(axis.text.x = element_blank(), # 因预期x轴另外加一条渐变的图形表示,在这里取消x轴        panel.grid.minor = element_blank(), # 移除图中的网格        panel.grid.major = element_blank(), # 移除图中的网格        panel.spacing.x = element_blank()) +  xlab("Salinity")+ # 设置x轴标题  ylab("Relative abundance (%)")# 设置Y轴标题p1e
ggsave("冲击图展示菌群随盐度的变化.pdf", p1e, width = 8, height = 5)

以上数据和代码仅供大家参考,如有不完善之处,欢迎大家指正!

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

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

相关文章

gen_server补充基础学习

学习gen_server的回调结构 gen_server:start_link(Name, Mod, InitArgs, Opts)这个调用是所有事物的起点。它 会创建一个名为Name的通用服务器&#xff0c;回调模块是Mod&#xff0c;Opts则控制通用服务器的行为。在这里可以指定消息记录、函数调试和其他行为。通用服务器通过…

基于QGIS 3.16.0 的OSM路网矢量范围裁剪实战-以湖南省为例

目录 前言 一、相关数据介绍 1、OMS路网数据 2、路网数据 3、路网图层属性 二、按省域范围进行路网裁剪 1、裁剪范围制定 2、空间裁剪 3、裁剪结果 三、总结 前言 改革开放特别是党的十八大以来&#xff0c;我国公路发展取得了举世瞩目的成就。国家高速公路网由“7 射…

ATECLOUD平台相比传统ATE测试有哪些独特的优势?

随着科技的飞速发展&#xff0c;在电子测量行业&#xff0c;自动化测试也逐渐取代了传统手动&#xff0c;市场上的大多数测试企业近几年都在进行自动化转型&#xff0c;而伴随着测试行业自动化、智能化的趋势&#xff0c;各类自动化测试系统也发展迅速&#xff0c;在众多ATE自动…

一种模式包含引流和复购 让你的私域电商平台腾飞!

在当今的商业环境中&#xff0c;一种名为“循环购”的创新商业模式正悄然兴起&#xff0c;它打破了传统消费观念&#xff0c;让“消费1000送2000&#xff0c;每日领钱&#xff0c;轻松提现”不再是遥不可及的梦想。很多人可能会问&#xff0c;这究竟是商家的慷慨解囊&#xff0…

多模态大模型-MiniCPM-V

1. 简介 本文主要探索如何在性能和效果之间的权衡&#xff0c;希望能在合适的性能下&#xff0c;模型效果有大幅的提升。主要贡献点有&#xff1a; 通过模型结构&#xff0c;数据&#xff0c;训练策略等优化&#xff0c;让MiniCPM-Lllama3-V 2.5[1]在OpenCompass评测上超过了…

03:手动可变电阻

可变电阻 1、电位器2、变阻器/数字电位器2.1&#xff1a;变阻器2.2&#xff1a;数字电位器 3、电位器锥度4、寄生电感/电容 1、电位器 如上图所示&#xff1a;将可变的电阻作为分压器&#xff0c;那么这种可变的电阻就是电位器。例如&#xff1a;将L1连接负极&#xff0c;L3连接…

SQLMAP windows10 安装记录

1.Windows系统下安装Sqlmap&#xff0c;需要安装python环境 python下载和安装 官方下载 https://www.python.org/downloads 建议直接下载安装版&#xff1a;installer 最后到这个界面正常是成功了&#xff0c;但也要校验一下 进入windows 命令窗口 正常输入你安装的python 版本…

OpenHarmony(鸿蒙南向开发)——轻量系统芯片移植指南(二)

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ OpenHarmony&#xff08;鸿蒙南向开发&#xff09;——轻量系统芯片移植指南(一) Op…

数据库与表的操作

目录 1. 库的操作 1.1创建数据库案例 1.2字符集和校验规则 1.2.1查看系统默认字符集以及校验规则 1.2.2 查看数据库支持的字符集 1.2.3查看数据库支持的字符集校验规则 1.2.4校验规则对数据库的影响 1.3.1查看数据库 1.3.2显示创建语句 1.3.3修改数据库 1.3.4 数据…

将一句英文颠倒输出

例如&#xff1a; 输入&#xff1a;s “i am from beijing" 输出&#xff1a;”beijing form am i“ #include <stdio.h> #include <string.h>//i am form nanjing //ginjnan mrof ma i //nanjing form am i//逆序算法(首尾互换) void Reserve(char *s,in…

windows 创建新用户,并分配到指定组

右击电脑 -> 点击管理 在右边右击&#xff0c;选择新用户&#xff0c;输入相关信息创建 创建用户后&#xff0c;选择用户&#xff0c;右击&#xff0c;选择属性&#xff0c;添加 点击高级 点击立即查找&#xff0c;可以搜索出所有可用的组&#xff0c;为其选择即可

mosh java 2.4 inheritance继承

1.面向对象编程的第三个特点 继承 继承的好处 java不能继承多个父级 代码文件结构 1.main.java package org.example; //package org.codewithme;//import org.example.UIControl;//TIP To <b>Run</b> code, press <shortcut actionId"Run"/> or /…

《深度学习》PyTorch 手写数字识别 案例解析及实现 <上>

目录 一、了解MINIST数据集 1、什么是MINIST 2、查看MINIST由来 二、实操代码 1、下载训练数据集 2、下载测试数据集 运行结果&#xff1a; 3、展示手写数字图片 运行结果&#xff1a; 4、打包图片 运行结果&#xff1a; 5、判断当前pytorch使用的设备 1&#xff…

RK3568 外接摄像头预览方向错误

1.测试发现摄像头预览方向被旋转了90度 2.问题原因: device\rockchip\common\external_camera_config.xml 配置文件旋转了90度: 3.解决对策 修改orientation为0度

MultiSnapRecyclerView:让Android RecyclerView的滚动停靠更灵活

在Android应用开发中&#xff0c;RecyclerView是一个强大且灵活的组件&#xff0c;用于展示大量数据集合。然而&#xff0c;标准的RecyclerView只支持单一的滚动停靠点&#xff0c;这在某些场景下可能不够灵活。为了解决这个问题&#xff0c;TakuSemba开发了一个名为MultiSnapR…

Vue3+TS项目给el-button统一封装一个点击后转圈效果的钩子函数按钮防抖

前言 每个按钮都要单独定义一个loading变量&#xff0c;并且在接口请求前修改为true&#xff0c;接口响应后再修改为false&#xff0c;封装后这段重复的逻辑就可以统一管理不用每次都写一遍了。 效果 新建一个公共的src\common.ts import { ref } from "vue"expor…

Apache-wed服务器环境的安装

一。安装httpd并且开启httpd yum install httpd systemctl start httpd 二。关闭防火墙 systemctl stop firewall 三。常规配置wed服务 mkdir /www vim index.html&#xff08;里面写入自己的内容&#xff09; chmod 755 index.htm chmod 755 /www vim /etc/httpd/co…

管家婆云辉煌手机端怎么连接蓝牙打印机?

管家婆云辉煌手机端可以连接蓝牙打印机&#xff0c;这样手机可以发送打印任务到蓝牙打印机&#xff0c;完成打印任务。具体的设置步骤如下&#xff1a; 一、首先完成手机和蓝牙打印机配对&#xff0c;打开蓝牙打印机后。手机开启蓝牙和定位服务 点击手机设置&#xff0c;进入手…

价值流案例研究:实战经验与成功实践的深度解析

价值流在实际应用中的强大效益 在全球化和数字化竞争愈加激烈的背景下&#xff0c;企业正面临如何优化内部流程、提升客户体验、减少成本和提高效益的多重挑战。《价值流指南》不仅是一种理论工具&#xff0c;更为企业提供了系统化的实践框架&#xff0c;以实现从理论到实战的…

Threejs之加载3D模型(上)

本文目录 前言一、模型类型1.1 支持的模型类型1.2 模型加载器 二、常用模型加载器2.1 代码示例2.1.1 GLTFLoader2.1.1.1 代码2.1.1.2 效果 前言 Three.js 是一个基于 WebGL 的 JavaScript 3D 库&#xff0c;它提供了丰富的 API 来在网页上创建和显示 3D 图形。加载 3D 模型到 T…