3d NMDS多样性分析图 R语言

embedded/2024/10/23 21:09:07/
# 安装并加载必要的包
if (!require("vegan")) install.packages("vegan")
if (!require("ggplot2")) install.packages("ggplot2")
if (!require("plotly")) install.packages("plotly")
if (!require("reticulate")) install.packages("reticulate")# 加载包
library(vegan)
library(ggplot2)
library(plotly)
library(reticulate)# 设置工作目录
setwd("C:/Users/fordata/Desktop/研究生/第二个想法(16s肠型+宏基因组功能)/第二篇病毒组/result/β多样性")# 载入数据
tpm <- read.table("fetal_2.0_rpkm.txt", header = TRUE, row.names = 1)
tpm <- t(tpm)
metadata <- read.table("fetal_2.0_metadata.txt", header = TRUE, row.names = 1)
metadata$group <- as.factor(metadata$group)# 计算 Bray-Curtis 距离矩阵
dist_matrix <- vegdist(tpm, method = "bray")# 执行 NMDS 分析
nmds_result <- metaMDS(dist_matrix, k = 3, trymax = 200)  # 增加 trymax 的值# 提取NMDS的坐标得分(提取样本点的坐标)
scores_nmds <- as.data.frame(nmds_result$points)
colnames(scores_nmds) <- c("NMDS1", "NMDS2", "NMDS3")# 将元数据添加到结果中
df_nmds <- cbind(scores_nmds, metadata)# 查看列名 (确保有 NMDS1, NMDS2, NMDS3)
colnames(df_nmds)# 绘制3D NMDS图
fig <- plot_ly(df_nmds, x = ~NMDS1, y = ~NMDS2, z = ~NMDS3, color = ~group, colors = c("AF" = "#BD3C29", "M" = "#0172B6", "P" = "#78D3AC", "UB"="#E18727", "NC"="black"),type = 'scatter3d', mode = 'markers', marker = list(size = 13)) %>%layout(scene = list(xaxis = list(title = "NMDS1"),yaxis = list(title = "NMDS2"),zaxis = list(title = "NMDS3")),legend = list(x = 1, y = 0.5, font = list(size = 16)))  # 调整图例位置# 显示图形
fig# 计算组间差异的PERMANOVA分析
adonis_result <- adonis2(dist_matrix ~ group, data = metadata, permutations = 999)
cat("PERMANOVA结果:\n")
print(adonis_result)# 计算组间差异的ANOSIM分析
anosim_result <- anosim(dist_matrix, metadata$group, permutations = 999)
cat("\nANOSIM结果:\n")
print(anosim_result)# 保存为高分辨率 PDF
# 使用外部工具或 `orca` 保存为 PDF(例如需要安装 `orca` 工具)
# fig %>% save_image("fetal_nmds_3d_plot.pdf", width = 800, height = 600, scale = 2)

保存图片是个问题,我试了一下,export出html文件,然后到网页截图会比较清楚

  • PERMANOVA 结果(通过 adonis2() 计算):你将会得到组间差异的 值、F 值以及 p 值。p 值越低,组间差异越显著。
  • ANOSIM 结果(通过 anosim() 计算):你将会得到组间相似性的 R 值和相应的 p 值。R 值越接近 1,组间差异越大;R 值越接近 0,说明组内和组间的差异相似。

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

相关文章

芯知识 | NVH-FLASH语音芯片支持平台做语音—打造音频IC技术革新

随着科技的飞速发展&#xff0c;人们对于电子产品的音频性能要求越来越高。在这种背景下&#xff0c;NVH-FLASH系列语音芯片应运而生&#xff0c;作为音频IC领域的一次重大技术革新&#xff0c;NVH-FLASH系列语音芯片凭借其卓越的性能与灵活的支持平台&#xff0c;正逐步引领着…

MATLAB中的size函数

**MATLAB中的size函数用于获取矩阵或数组的维度信息&#xff0c;包括行数和列数**。以下是对size函数的详细解析&#xff1a; 1. **基本用法**&#xff1a;当仅有一个输出参数时&#xff0c;ssize(A)会返回一个行向量&#xff0c;其中第一个元素是矩阵的行数&#xff0c;第二个…

【Unity(2)】unity开发的基本框架和经典的 MVC 架构模式

什么是架构? 架构是一个约定&#xff0c;一个规则&#xff0c;一个大家都懂得遵守的共识。那这是什么样的约定、什么样的规则、什么样的共识呢&#xff1f; 一个项目开始立项的时候&#xff0c;最常见的一个情况就是&#xff1a;几个人一个小团队&#xff0c;开始什么也不做…

android NDK 编译提示 is not able to compile a simple test program

问题描述 在将项目 clone 下来之后编译&#xff0c;提示 The C compiler"C:/Users/***/AppData/Local/Android/Sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exeis not able to compile a simple test program问题分析 很明显的提示&#…

推荐算法工程师面试中常见的问题及答案1

以下是一些推荐算法工程师面试中常见的问题及答案&#xff0c;覆盖了推荐系统中的经典算法、评价指标、业务场景等多个方面。你可以通过这些问题来全面了解面试中可能涉及的知识点。 1. 协同过滤&#xff08;Collaborative Filtering&#xff09;的两种主要方法是什么&#xf…

sprint-test和junit的区别

1. spring-test 依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.3.10</version><scope>test</scope> </dependency>用途&#xff1a;spring-test 是 …

flask 接口还在执行中,前端接收到接口请求超时,解决方案

在 Flask 中,当某个接口执行时间较长而导致前端请求超时时,需要考虑以下解决方案: 1. 优化接口的响应时间 如果可能,先优化接口中的代码逻辑,减少处理时间。对于查询操作,可以考虑数据库索引优化、缓存机制等手段。2. 增加请求超时时间 如果接口确实需要较长时间完成,前…

React基础知识(一) - React初体验

React是在2013年&#xff0c; 由Faceboo开源的&#xff0c;用于构建用户界面的 JavaScript 库。总所周知啊,React是前端三大框架之一啊现在前端领域最为流行的是三大框架&#xff1a; ReactVueAngular 前端三大框架 React开发的特点&#xff1a; &#xff08;1&#xff09;声明…