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

R语言vegan包NMDS图中用颜色区分物种组报错求助

解决NMDS图物种分组着色的错误问题

你的代码报错是因为直接对字符串使用|(逻辑或)运算符,R里这个运算符只能处理逻辑值、数值或复数类型,不能直接拿字符串这么用。

正确的做法是先把要标记的物种存成一个向量,再用%in%判断每个物种是否属于这个目标组,生成对应的逻辑向量后再给颜色参数:

# 定义需要标红的物种列表
target_species <- c(
  "Hylocomiastrum umbratum", "Scapania apiculata", 
  "Neckera pennata", "Crossocalyx hellerianus", 
  "Syzygiella autumnalis", "Lepidozia reptans", 
  "Nowellia curvifolia", "Riccardia latifrons", 
  "Riccardia palmata", "Trichocolea tomentella", 
  "Ulota crispa"
)

# 获取所有物种的名称
species_names <- rownames(scores(ord, display = "species"))

# 绘制物种点,根据是否在目标列表设置颜色
points(
  ord, display = "species",
  col = ifelse(species_names %in% target_species, "red", "black"),
  pch = "*", cex = 0.9
)

关键说明:

  • %in%会逐个检查species_names里的每个物种是否存在于target_species向量中,返回一个和物种数量一致的逻辑向量(符合条件为TRUE,否则FALSE)
  • scores(ord, display = "species")用于提取NMDS排序结果中的物种坐标数据,rownames()就能拿到对应的物种名称

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:55:04