You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R新手:为非度量多维尺度分析结果的xyplot分配类型

嘿,作为刚接触R的新手搞NMDS确实得捋清楚每一步,我帮你拆解整个流程,重点解决把类型列和NMDS结果结合做分组可视化的问题:

第一步:整理数据,分离相似性矩阵和类型列

首先你加载数据的时候,注意如果你的文本文件第一列就是Y1-Y95这些样本名,用row.names=1会比手动列所有样本名更省心。接下来要把第96列的类型信息单独提出来,因为NMDS只需要95×95的相似性矩阵:

# 加载数据(假设第一列是样本名,自动设为行名)
dsimilarity <- read.table("d95x95matrix.txt", header = TRUE, row.names = 1)

# 提取第96列的类型信息
group_info <- dsimilarity[, 96]
# 保留95×95的相似性矩阵
sim_matrix <- dsimilarity[, -96]

这里要注意:NMDS分析需要的是相异矩阵(值越大代表样本越不相似),但你的数据是相似性(8=高度相似,1=高度不相似),所以得转成相异值,最简单的方法是用9 - 相似值,这样相似性8变成相异1,相似性1变成相异8,完全符合相异矩阵的逻辑:

# 转换为相异矩阵
diss_matrix <- 9 - sim_matrix
# 转换成dist对象(vegan包的NMDS函数需要这个格式)
diss_dist <- as.dist(diss_matrix)
第二步:运行NMDS分析

R里做NMDS最常用的是vegan包的metaMDS函数,先安装并加载包:

# 首次使用先安装vegan
install.packages("vegan")
library(vegan)

# 运行NMDS,指定二维结果(k=2),trymax增加尝试次数确保找到稳定解
nmds_result <- metaMDS(diss_dist, k = 2, trymax = 100)

运行完可以看一下结果里的stress值:一般stress<0.2说明结果可以接受,<0.1的话就是很不错的拟合效果。

第三步:整合NMDS结果和类型信息

把NMDS的坐标得分和你的类型列合并成一个数据框,方便后续绘图:

# 提取NMDS的xy轴得分
nmds_scores <- as.data.frame(scores(nmds_result))
# 添加类型列,建议转成因子方便分组
nmds_scores$group <- as.factor(group_info)
# 可选:保留样本名
nmds_scores$sample <- rownames(nmds_scores)
第四步:用xyplot做分组可视化

用lattice包的xyplot来实现按类型分组的可视化,先安装加载包:

# 首次使用安装lattice
install.packages("lattice")
library(lattice)

# 绘制分组NMDS图
xyplot(NMDS1 ~ NMDS2, data = nmds_scores, 
       groups = group,          # 按类型分组
       pch = 16,                # 点的形状(实心圆)
       col = c("#1f77b4", "#ff7f0e"), # 对应类型0和1的颜色,可自定义
       main = "NMDS Plot Grouped by Sample Type",
       xlab = "NMDS Axis 1",
       ylab = "NMDS Axis 2",
       # 添加图例
       key = list(columns = 2,
                  text = list(c("Type 0", "Type 1")),
                  points = list(pch = 16, col = c("#1f77b4", "#ff7f0e"))))

小提示

  • 如果你的类型列是数值型(0/1),转成因子as.factor()能让xyplot更好地识别分组逻辑。
  • 如果加载数据时手动指定row.names遇到问题,直接用row.names=1让第一列作为行名是更稳妥的做法,前提是你的文本文件第一列确实是Y1-Y95这些样本标识。

内容的提问来源于stack exchange,提问作者Thewalkindude

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:26:10