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
相关产品推荐
相关产品推荐

