2017-08-01 43 views
1

我想绘制时间序列的盒图(例如http://www.r-graph-gallery.com/146-boxplot-for-time-series/),并且可以让其他示例工作,禁止使用最后一个示例。我有六年(2011年至2016年)的平均值,并有2014年和2015年的数据(尽管数量很少),但由于某些原因,2014年和2015年的数据没有显示箱子。Boxplot不会绘制所有数据

我的输入数据有三列:年,月和居住索引(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

我刚刚添加了一小部分(非常小)的数据。希望你遵循它。 – Rishard

回答

0

您的问题似乎是在您的数据中存在缺失值NA,其他值正确绘制。我简化了一下你的代码。

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

而且,我相信,也许箱线图不是来描述数据的最佳方式。如果箱型需要更多,则每year/month只有一个值。也许一个简单的散点图会做得更好。

+0

我有多个个体,这就是为什么我希望使用boxplot,但我也会尝试一个散点图。事情看起来好多了!谢谢。 – Rishard