使用R中的中值数据绘制多个时间序列图

时间:2017-01-24 15:45:17

标签: r plot timeserieschart

我刚开始学习R所以这可能是多余的,所以我道歉。我希望在R中附上excel图表。我的数据包括1951年至2016年水库的日常水位读数。我需要将数据分为三个系列(1951年至2013年,2014年至2015年和2016年)。我想绘制每个日历日这些系列的中值。我想从中值中删除29号。以下是我的数据的链接:https://docs.google.com/spreadsheets/d/1u1Whfp6VHXkZgrC0sVn_mT9XiVxszMhqlAszjZXzM1E/edit?usp=sharing

这是我到目前为止所做的:

LL <- read.csv("BSLL.csv")
str(LL)
LLpre <- filter(LL, year > "1952" & year <"2014") 
headtail(LLpre, n=3)
medianLLpre = ddply(LLpre, .(month, day), summarise, level = median(level),   na.rm = FALSE)
LLpost <- filter(LL, year > "2013" & year < "2016")
headtail(LLpost, n=3)
medianLLpost = ddply(LLpost, .(month, day), summarise, level = median(level), na.rm = FALSE)
LL2016 <- filter(LL, year == "2016")
headtail(LL2016, n=3)
medianLL2016 = ddply(LL2016, .(month, day), summarise, level = median(level), na.rm = FALSE)    

Excel Plot

1 个答案:

答案 0 :(得分:0)

library(data.table)
Data <- fread("BSLL - BSLL.csv")

创建临时时间间隔类别1 = 1951至2013,2 = 2014至2015年,3 = 2016

Data[,Categories:=ifelse(as.numeric(year)<2014,1,
                         ifelse(as.numeric(year)<2016,2,3))]

创建没有第29次的临时数据

Temp.Data <- Data[!month==2][!day==29]

按类别和情节计算中位数。

Medians <- Temp.Data[,median(as.numeric(level)),by=.(month,Categories)]
plot(x=Medians[,month], y=Medians[,V1],type="n", xlab="", ylab="", 
     xaxt="n", yaxt="n", bty="l")
axis(2, tick=TRUE, labels=FALSE)
axis(2, tick=FALSE, labels=TRUE, line=-0.5)
axis(1, tick=TRUE, labels=FALSE)
axis(1, tick=FALSE, labels=TRUE, line=-0.5)
lines(x=Medians[Categories==1][,month],
      y=Medians[Categories==1][,V1],type="l",lwd=1,col="red")
lines(x=Medians[Categories==2][,month],
      y=Medians[Categories==2][,V1],type="l",lwd=1,col="green")
lines(x=Medians[Categories==3][,month],
      y=Medians[Categories==3][,V1],type="l",lwd=1,col="blue")
legend('topright','groups',
       legend=c("1951 to 2013","2014 to 2015","2016"), bty="n",lty=c(1,1),
       col=c("red","green","blue"))

这是怎么回事?你可以修改情节的细节(尺寸,位置,颜色,标签等......你自己)

P.S将来公开发布您的完整数据集并不是一个好主意。这里的贡献者只需要一个您的数据示例来使用和测试