R 语言ggplot报错:Removed 2 rows containing missing values (geom_errorbar)
可能是因为自己多加了 ylim=(a,b),而某点处的值超过了这个范围,从而ggplot画图功能自动删去超出范围的点,并报错去掉了值,如果出现这种错误可以修改ylim的范围或者直接去掉ylim。
范例如下。
my_plot_2<-function(N){
epsilon<-rnorm(N)
row<-1/1.8;theta<-2.13
X<-filter(epsilon,filter=c(2*row*cos(theta),-row^2),method="recursive",sides=1)
gamma_hat<-numeric(length=61)
gamma<-numeric(length=61)
X_bar<-mean(X)
for(i in 0:60){
gamma_hat[i+1]<-sum((X[1:(N-i)]-X_bar)*(X[(i+1):N]-X_bar))/N
}
rep=1000
a<-matrix(data=0,nrow=rep,ncol=61)
for(j in 1:rep){
epsilon<-rnorm(N)
row<-1/1.8;theta<-2.13
X<-filter(epsilon,filter=c(2*row*cos(theta),-row^2),method="recursive",sides=1)
X_bar<-mean(X)
for(i in 0:60){
a[j,i+1]<-sum((X[1:(N-i)]-X_bar)*(X[(i+1):N]-X_bar))/N
}
}
gamma_true<-apply(a,2,mean)
p<-ggplot(data.frame(x=0:60,y1=gamma_hat,y2=gamma_true), aes(x=x, y=y2)) +
geom_line() +
geom_point()+
geom_errorbar(aes(ymin=y2-y1,ymax=y2+y1),width=.1)+
ylim=c(-2,2)
p
}
得到结果:
如图
如图为一个误差图,但是报错去掉了一个数据,且误差图第一个点是没有误差棒的,这是因为加上误差之后范围超过上限2,从而被删掉。正确做法是删掉ylim。