在R绘图中每个数据点出现8条误差棒的原因排查
Pb同位素比值图误差棒问题排查与解决
问题描述
尝试在R中绘制两个位点("control"和"active site")的Pb同位素比值(²⁰⁶Pb/²⁰⁷Pb和²⁰⁸Pb/²⁰⁷Pb)平均值图,希望每个数据点显示4条代表标准差的误差棒(x轴正负、y轴正负)。已在Excel中计算好平均值与标准差,字段名分别为avg206Pb207Pb、sd206Pb207Pb、avg208Pb207Pb、sd208Pb207Pb。此前代码处理其他数据正常,但现在每个数据点出现8条误差棒,且误差棒末端无垂直短线,需排查问题原因。
数据
| site | avg206Pb207Pb | sd206Pb207Pb | avg208Pb207Pb | sd208Pb207Pb |
|---|---|---|---|---|
| active site | 1.2553 | 0.0046 | 2.5245 | 0.0017 |
| control | 1.2476 | 0.0021 | 2.5254 | 0.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
相关产品推荐
相关产品推荐

