使用ggplot2仅向一个系列添加误差线(当存在多个时)

问题描述 投票:2回答:1

我有一个包含两个y系列的数据框。我有一个数据的散点图,但我无法弄清楚如何只为一个y系列添加误差线。

这是我的散点图代码的简化版本。

MAndPScatter <- ggplot(MeasuredAndPredicted, aes(x=MeasuredAndPredicted$VoltageDifference)) + 
geom_point(aes(y = MeasuredAndPredicted$DeflectionMeasured) + 
geom_point(aes(y = MeasuredAndPredicted$DeflectionPredicted)) +
geom_abline(data=CRT2, intercept = -0.0006814, 
          slope = 0.0015342, lty=3) +
geom_abline(data=CRT2, intercept = -1.156e-18, 
          slope = 1.120e-03, lty=3) 

这就是情节

enter image description here

我只想在蓝色系列中添加错误栏,但我不知道该怎么做。我尝试了正常的错误条形码(当它只有蓝色系列时的情节)

geom_errorbar(data=MeasuredAndPredicted, aes(ymin=MeasuredAndPredicted$DeflectionMeasured-Errors,
ymax=MeasuredAndPredicted$DeflectionMeasured+Errors))

这没用,给了我这个错误

Error: Aesthetics must be either length 1 or the same as the data (9): ymin, ymax, x

以供参考

dput(MeasuredAndPredicted) structure(list(VoltageDifference = c(1.1575, 3.5725, 
4.26, 5.56, 5.8225, 7.06, 9.865, 10.5475, 12.37), DeflectionMeasured = c(0.00125, 
0.0045, 0.00575, 0.00775, 0.00875, 0.01, 0.01425, 0.01575, 0.01825 ), 
DeflectionPredicted = c(0.0012964, 0.0040012, 0.0047712, 0.0062272, 0.0065212, 
0.0079072, 0.0110488, 0.0118132, 0.0138544)), .Names = c("VoltageDifference", 
"DeflectionMeasured", "DeflectionPredicted"), row.names = c(NA, 9L), 
class = "data.frame")
r ggplot2 scatter-plot errorbar
1个回答
0
投票

它不漂亮,但你可以重写你不想要的错误作为NA,然后它们就不会出现。最好使用长格式。

df<-data.frame(x<-c(runif(10,0,50),runif(10,0,50)-2),type<-rep(c("measured","predicted"),each=10),y<-rnorm(20,5,10),errors<-c(runif(10,0,1),rep(NA,10)))

ggplot(df, aes(x=x,y=y,group=type,colour=type)) + 
  geom_point() +
  geom_smooth(method="lm", fill=NA)+
  geom_errorbar(aes(ymin=y-errors, ymax=y+errors), width=.5)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.