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

如何绘制无竖线的物种累积曲线并合并多组曲线?

解决物种累积曲线的阴影置信区间与多曲线合并问题

核心思路

利用vegan包的specaccum生成累积曲线对象后,提取每个曲线的均值、置信区间数据,再用ggplot2绘制带阴影置信区间的多曲线合并图(比base绘图更灵活)。以下是可复现代码,你可以直接替换成自己的数据集:


步骤1:加载包并构造示例数据(替换为你的真实数据)

library(vegan)
library(ggplot2)

# 模拟分组物种丰度数据(你可以替换成自己的dataframe,确保分组列和物种列分离)
set.seed(123)
df <- data.frame(
  Group = rep(c("森林", "草地", "湿地"), each = 10), # 你的分组变量
  matrix(rpois(30*15, lambda = 2), nrow = 30, ncol = 15, dimnames = list(NULL, paste0("物种", 1:15))) # 物种丰度列
)

# 按分组拆分物种数据
group_data_list <- split(df[, -1], df$Group)

步骤2:生成各组的物种累积曲线对象

# 对每个分组生成随机重抽样的物种累积曲线
sa_objects <- lapply(group_data_list, function(x) specaccum(x, method = "random"))

步骤3:提取绘图所需数据(均值+置信区间)

# 提取每个曲线的样方数、物种丰富度均值、置信区间(这里用标准差,可替换为95%CI)
plot_data_list <- lapply(names(sa_objects), function(group_name) {
  sa <- sa_objects[[group_name]]
  data.frame(
    样方数 = sa$sites,
    物种丰富度 = sa$richness,
    置信下限 = sa$richness - sa$sd,
    置信上限 = sa$richness + sa$sd,
    分组 = group_name
  )
})

# 合并成一个绘图数据框
plot_data <- do.call(rbind, plot_data_list)

步骤4:绘制带阴影置信区间的合并曲线

ggplot(plot_data, aes(x = 样方数, y = 物种丰富度, color = 分组)) +
  # 绘制阴影置信区间,alpha控制透明度,color=NA去除阴影边框
  geom_ribbon(aes(ymin = 置信下限, ymax = 置信上限, fill = 分组), alpha = 0.2, color = NA) +
  # 绘制累积曲线
  geom_line(linewidth = 1) +
  # 设置标签和主题
  labs(x = "采样样方数量", y = "物种丰富度", title = "不同生境的物种累积曲线") +
  theme_bw() +
  theme(legend.title = element_blank(), legend.position = "right")

可选调整

  • 若需要95%置信区间,替换置信上下限的计算:
    置信下限 = sa$richness - qt(0.975, sa$n-1)*sa$se
    置信上限 = sa$richness + qt(0.975, sa$n-1)*sa$se
    
  • 如果偏好base绘图,可通过polygon()函数手动绘制阴影区域,但多曲线管理不如ggplot便捷。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 10:45:09