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

如何在ggplot中合并采样组并按镇区求和后绘制个体数分布图

如何在ggplot中合并采样组并按镇区求和后绘制个体数分布图

嘿,我明白你的需求啦——要把每个镇区的采样1+2、3+4合并求和,然后画出类似之前的ggplot对吧?之前的问题出在你只改了采样的标签,但没按镇区和新组把个体数加起来,我来一步步教你搞定~

第一步:先整理数据——按镇区和合并采样组求和

首先我们需要把原始数据汇总,每个镇区对应两个合并组的总个体数。用dplyr包来做最方便(如果你还没装的话先执行:install.packages("dplyr"))。

代码如下:

# 加载dplyr包
library(dplyr)

# 创建汇总数据集:合并采样组并求和个体数
WPT_summary <- WPT %>%
  # 给每个采样值分配对应的合并组标签
  mutate(SamplingGroup = case_when(
    Sampling %in% c(1, 2) ~ "Sampling 1+2",
    Sampling %in% c(3, 4) ~ "Sampling 3+4"
  )) %>%
  # 按镇区和合并组分组,计算每个组的总个体数
  group_by(TownDistrict, SamplingGroup) %>%
  summarize(TotalIndividuals = sum(Individuals), .groups = "drop")

这段代码会把你的36行原始数据压缩成18行——每个镇区对应两个合并组的总个体数,这才是我们绘图需要的核心数据集。

如果你更习惯用recode的方式创建合并组,也可以这么写:

WPT_summary <- WPT %>%
  mutate(SamplingGroup = recode_factor(Sampling, 
                                       "1" = "Sampling 1+2", 
                                       "2" = "Sampling 1+2", 
                                       "3" = "Sampling 3+4", 
                                       "4" = "Sampling 3+4")) %>%
  group_by(TownDistrict, SamplingGroup) %>%
  summarize(TotalIndividuals = sum(Individuals), .groups = "drop")

用recode_factor能直接生成因子类型的分组,后续绘图时不会出现排序问题。

第二步:用汇总数据绘制ggplot

现在我们用处理好的WPT_summary来画图,逻辑和你之前的图类似,但要对应汇总后的字段:

library(ggplot2)
library(scales) # 用于pretty_breaks函数

ggplot(WPT_summary, aes(x = SamplingGroup, y = TotalIndividuals, colour = TownDistrict, group = TownDistrict)) +
  geom_point(size = 3) + # 可以按需调整点的大小
  geom_line() + # 连接同一个镇区的两个合并组数据点
  geom_hline(yintercept = 60, colour = "red", linetype = "dashed") + # 阈值线用虚线更醒目
  labs(
    x = "Sampling Group",
    y = "Total Individuals",
    title = "Total Individuals Observed per Combined Sampling Group per Town District",
    colour = "Town District"
  ) +
  scale_y_continuous(breaks = pretty_breaks(n = 10))

为什么之前的方法没起作用?

你之前只修改了Sampling的标签,但没有对每个镇区下的相同合并组进行求和,所以数据还是36行,绘图时每个镇区会显示四个重复标签的点,而不是我们需要的两个汇总点。分组求和才是解决问题的关键步骤!

这样出来的图就会清晰展示每个镇区的Sampling 1+2和Sampling 3+4的总个体数,同时保留你想要的颜色区分、连线效果,红色阈值线也能直观显示哪些组达到了统计要求~

备注:内容来源于stack exchange,提问作者Eonear Black

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 12:09:15