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

使用ggplot2绘制钙浓度随深度的平均值图(含误差棒需求)

问题描述

我有不同深度的钙浓度数据,每个深度做了三次重复测量。目前已能绘制所有单个钙浓度测量值的分布图(代码及图示如下),但不知如何绘制各深度对应的平均钙浓度图。最终我还需要为钙浓度添加标准差误差棒,不过这部分可后续处理。感谢帮助!

无深度平均的钙浓度随深度变化图:
无深度平均的钙浓度随深度变化图

现有代码:

Ca = ggplot(data = XRF, aes(x=Ca, y=depth)) +
      geom_point(aes(colour = Core)) +
      labs(title = "XRF Ca ppm with Depth at 1445A") +
      xlab("Ca (ppm)") +
      ylab("depth (mbsf)") +
      scale_y_reverse()
    Ca
解决方案

1. 计算各深度的平均钙浓度

先通过分组计算得到每个深度、每个Core对应的钙浓度均值,推荐用dplyr包处理:

# 未安装dplyr的话先执行安装
# install.packages("dplyr")
library(dplyr)

# 按depth和Core分组,计算平均Ca浓度
XRF_avg <- XRF %>%
  group_by(depth, Core) %>%
  summarise(avg_Ca = mean(Ca, na.rm = TRUE), .groups = "drop")

na.rm = TRUE用于忽略缺失值,可根据你的数据实际情况调整。

2. 绘制平均钙浓度图

用计算好的均值数据画图,逻辑和你原来的代码一致,仅替换x轴为均值即可:

Ca_avg <- ggplot(data = XRF_avg, aes(x=avg_Ca, y=depth)) +
  geom_point(aes(colour = Core), size = 3) # 增大点的尺寸,方便区分原始测量点
  labs(title = "Average XRF Ca ppm with Depth at 1445A") +
  xlab("Average Ca (ppm)") +
  ylab("depth (mbsf)") +
  scale_y_reverse()
Ca_avg

如果想同时展示原始数据点和均值点,可叠加两个图层:

Ca_combined <- ggplot(data = XRF, aes(x=Ca, y=depth)) +
  geom_point(aes(colour = Core), alpha = 0.5) # 原始点设半透明,避免遮挡均值点
  geom_point(data = XRF_avg, aes(x=avg_Ca, colour = Core), size = 3, shape = 18) # 均值点用特殊形状区分
  labs(title = "XRF Ca ppm (Raw & Average) with Depth at 1445A") +
  xlab("Ca (ppm)") +
  ylab("depth (mbsf)") +
  scale_y_reverse()
Ca_combined

后续添加标准差误差棒的提前准备

之后要加误差棒的话,只需在计算均值时同步算出标准差:

XRF_avg_sd <- XRF %>%
  group_by(depth, Core) %>%
  summarise(avg_Ca = mean(Ca, na.rm = TRUE),
            sd_Ca = sd(Ca, na.rm = TRUE), .groups = "drop")

再用geom_errorbarh添加水平误差棒:

Ca_avg_error <- ggplot(data = XRF_avg_sd, aes(x=avg_Ca, y=depth)) +
  geom_point(aes(colour = Core), size = 3) +
  geom_errorbarh(aes(xmin = avg_Ca - sd_Ca, xmax = avg_Ca + sd_Ca, colour = Core), height = 0.1)
  labs(title = "Average XRF Ca ppm with Depth (with SD Error Bars) at 1445A") +
  xlab("Average Ca (ppm)") +
  ylab("depth (mbsf)") +
  scale_y_reverse()
Ca_avg_error

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 00:17:29