2017-08-01 42 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