Boxplot未绘制所有数据

时间:2017-08-01 14:27:34

标签: r

我试图为一个时间序列绘制一个箱线图(例如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)

对此事的任何帮助将不胜感激。

1 个答案:

答案 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)

Boxplot of Rishard's data

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.