如何自定义estaccumR对象绘图:仅显示S与Chao(不含ACE)
自定义estaccumR绘图:仅显示S和Chao(隐藏ACE)
首先确保已加载vegan包(estaccumR是该包的函数),并生成累积估计对象:
library(vegan) # 生成estaccumR对象,使用dune示例数据集 acc_obj <- estaccumR(dune)
Base R 实现方式
通过提取累积曲线的数值数据,手动绘制指定曲线:
- 将estaccumR对象转换为数据框,获取各估计量的数值:
acc_df <- as.data.frame(acc_obj)
- 先绘制观测物种数(S)的曲线,再叠加Chao估计值的曲线,同时隐藏ACE:
# 初始化绘图,绘制S曲线 plot(acc_df$S, type = "l", lwd = 2, col = "steelblue", xlab = "样本数量", ylab = "物种数量", main = "物种累积曲线(仅S & Chao)") # 叠加Chao曲线 lines(acc_df$Chao, type = "l", lwd = 2, col = "firebrick", lty = 2) # 添加图例区分两条曲线 legend("bottomright", legend = c("观测物种数(S)", "Chao物种估计值"), col = c("steelblue", "firebrick"), lty = c(1, 2), lwd = 2)
ggplot2 实现方式
需要将宽格式数据转换为长格式,再通过ggplot2绘制指定曲线:
- 加载必要的包(
ggplot2和tidyr用于数据转换):
library(ggplot2) library(tidyr)
- 将数据框转换为长格式,仅保留S和Chao列:
acc_long <- acc_df %>% pivot_longer(cols = c(S, Chao), names_to = "估计类型", values_to = "物种数")
- 使用ggplot2绘制曲线:
ggplot(acc_long, aes(x = seq_along(物种数), y = 物种数)) + geom_line(aes(color = `估计类型`, linetype = `估计类型`), linewidth = 1.2) + labs(x = "样本数量", y = "物种数量", title = "物种累积曲线(仅S & Chao)") + scale_color_manual(values = c("S" = "steelblue", "Chao" = "firebrick")) + scale_linetype_manual(values = c("S" = 1, "Chao" = 2)) + theme_minimal()
注:
seq_along(物种数)用于生成样本数量的序列,对应estaccumR对象中每行的样本量。
内容的提问来源于stack exchange,提问作者AugieRockDoc
相关产品推荐
相关产品推荐

