我试图为一个时间序列绘制一个箱线图(例如http://www.r-graph-gallery.com/146-boxplot-for-time-series/)并且可以让其他所有例子都可以工作,禁止我的最后一个。我有六年(2011年至2016年)每月的平均值,并且有2014年和2015年的数据(尽管数量很少),但由于某些原因,2014年和2015年的数据没有显示。
我的输入数据有三列:年,月和居住指数(介于0和1之间的值)。有多个人(在本例中为37人),每人每年平均居住指数(包括2014年和2015年)。
例如:
year month RI
2015 1 NA
2015 2 NA
2015 3 NA
2015 4 NA
2015 5 NA
2015 6 NA
2015 7 0.387096774
2015 8 0.580645161
2015 9 0.3
2015 10 0.225806452
2015 11 0.3
2015 12 0.161290323
2016 1 0.096774194
2016 2 0.103448276
2016 3 0.161290323
2016 4 0.366666667
2016 5 0.258064516
2016 6 0.266666667
2016 7 0.387096774
2016 8 0.129032258
2016 9 0.133333333
2016 10 0.032258065
2016 11 0.133333333
2016 12 0.129032258
对每条鱼都重复。
我的代码:
#make boxplot
boxplot(RI$RI~RI$month+RI$year,
xaxt="n",xlab="",col=my_colours,pch=20,cex=0.3,ylab="Residency Index (RI)", ylim=c(0,1))
abline(v=seq(0,12*6,12)+0.5,col="grey")
axis(1,labels=unique(RI$year),at=seq(6,12*6,12))
平均趋势线按照其他示例工作。
a=aggregate(RI$RI,by=list(RI$month,RI$year),mean, na.rm=TRUE)
lines(a[,3],type="l",col="red",lwd=2)
对此事的任何帮助将不胜感激。
答案 0 :(得分:0)
Your problem seems to be the presence of missing values, NA
, in your data, the other values are plotted correctly. I've simplified your code a bit.
boxplot(RI$RI ~ RI$month + RI$year,
ylab="Residency Index (RI)")
a <- aggregate(RI ~ month + year, data = RI, FUN = mean, na.rm = TRUE)
lines(c(rep(NA, 6), a[,3]), type="l", col="red", lwd=2)
Also, I believe that maybe a boxplot is not the best way to depict your data. You only have one value per year/month
, when a boxplot would require more. Maybe a simple scatter plot will do better.