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

在R绘图中每个数据点出现8条误差棒的原因排查

Pb同位素比值图误差棒问题排查与解决

问题描述

尝试在R中绘制两个位点("control"和"active site")的Pb同位素比值(²⁰⁶Pb/²⁰⁷Pb和²⁰⁸Pb/²⁰⁷Pb)平均值图,希望每个数据点显示4条代表标准差的误差棒(x轴正负、y轴正负)。已在Excel中计算好平均值与标准差,字段名分别为avg206Pb207Pb、sd206Pb207Pb、avg208Pb207Pb、sd208Pb207Pb。此前代码处理其他数据正常,但现在每个数据点出现8条误差棒,且误差棒末端无垂直短线,需排查问题原因。

数据

siteavg206Pb207Pbsd206Pb207Pbavg208Pb207Pbsd208Pb207Pb
active site1.25530.00462.52450.0017
control1.24760.00212.52540.0027

原代码

pbratiofourwayerror$site <- factor(
  pbratiofourwayerror$site, 
  levels = c("activesite","control")
)

a <- ggplot(
  pbratiofourwayerror, 
  aes(x=avg208Pb207Pb, y=avg206Pb207Pb)
) + 
geom_point(
  aes(color=site, shape=site), 
  size=5
) + 
scale_shape_manual(values=c(15,19)) +
xlab(expression(""^208*"Pb"*"/"^"207"*Pb)) + 
ylab(expression(""^206*"Pb"*"/"^"207"*Pb)) + 
theme_classic() + 
geom_errorbarh(
  aes(
    xmax = avg208Pb207Pb + sd208Pb207Pb, 
    xmin = avg208Pb207Pb - sd208Pb207Pb, 
    color=site
  ), 
  height=0.25
) + 
geom_errorbar(
  aes(
    ymin=avg206Pb207Pb-sd206Pb207Pb, 
    ymax=avg206Pb207Pb+sd206Pb207Pb, 
    color=site
  ), 
  width=0.25
)

a

问题分析与解决

1. 8条误差棒的原因

数据中第一个位点名称为"active site"(含空格),但设置因子水平时写的是"activesite"(无空格),两者不匹配。这导致ggplot无法正确识别分组,将每个位点的误差棒重复绘制两次,最终每个数据点出现8条误差棒(x/y方向各4条)。

2. 误差棒末端无短线的原因

geom_errorbarh的height参数和geom_errorbar的width参数设置过大:y轴范围仅在1.24-1.26之间,height=0.25远超出该范围;x轴范围在2.52-2.53之间,width=0.25也远大于刻度间隔,导致末端短线被拉伸至不可见。

修正后的代码

# 修正因子水平,匹配数据中的site名称
pbratiofourwayerror$site <- factor(
  pbratiofourwayerror$site, 
  levels = c("active site","control")
)

a <- ggplot(
  pbratiofourwayerror, 
  aes(x=avg208Pb207Pb, y=avg206Pb207Pb)
) + 
geom_point(
  aes(color=site, shape=site), 
  size=5
) + 
scale_shape_manual(values=c(15,19)) +
xlab(expression(""^208*"Pb"*"/"^"207"*Pb)) + 
ylab(expression(""^206*"Pb"*"/"^"207"*Pb)) + 
theme_classic() + 
# 调小height参数,显示水平误差棒末端短线
geom_errorbarh(
  aes(
    xmax = avg208Pb207Pb + sd208Pb207Pb, 
    xmin = avg208Pb207Pb - sd208Pb207Pb, 
    color=site
  ), 
  height=0.001
) + 
# 调小width参数,显示垂直误差棒末端短线
geom_errorbar(
  aes(
    ymin=avg206Pb207Pb-sd206Pb207Pb, 
    ymax=avg206Pb207Pb+sd206Pb207Pb, 
    color=site
  ), 
  width=0.001
)

a

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 22:27:47