R中多个系列的图,带有日期

时间:2016-01-26 13:52:43

标签: r date plot time-series

我想创建包括“dailydata”,“MAw”和“average”的d图:
其中“dailydata”是

dailydata <- structure(list(CREDIT.AGRICOLE = c(0.0129, 0.0132, 0.0136, 0.0125, 0.0118, 
0.0114, 0.0114, 0.0106, 0.0107, 0.0116, 0.0122, 0.0126, 0.0137, 0.0141,0.0137), 
SOCIETE.GENERAL = c(0.0178, 0.0182, 0.0187, 0.0175, 0.0167, 0.0165, 0.0160, 0.0155, 0.0155,
0.0162, 0.0182, 0.0195, 0.0205, 0.0207, 0.0201)),
.Names = c("CREDIT.AGRICOLE", "SOCIETE.GENERAL"),
row.names = c("18/11/2008", "19/11/2008", "20/11/2008", "21/11/2008", "22/11/2008", 
"23/11/2008", "24/11/2008", "25/11/2008", "26/11/2008", "27/11/2008", "28/11/2008",
"29/11/2008", "30/11/2008", "01/12/2008", "02/12/2008"), class = "data.frame")

和“MAw”和“average”我这样得到了

w <- 3                       #MA(w)
n <- length(dailydata[,1])+0 #length of data
d <- length(dailydata[1,])+0 #nr of obligors

#extract row and col names
obligorname <- colnames(dailydata)
dates <- rownames(dailydata) 

# calculate moving average ma(w) from daily data
#--------------------------------------------
MAw <- vector()
for(j in seq(from=1, to=d, 1)) #1,2
   {
   vec_MAw <- vector()

   for (i in seq(from=1, to=n-w+1, 1)) #1,2,..., 13
      {
      mean <- sum(dailydata[i:(w-1+i),j])/w
      vec_MAw <- rbind(vec_MAw, mean)
      }
   MAw <- cbind( MAw, vec_MAw)
   }

#name rows and cols
colnames(MAw) <- obligorname
rownames(MAw) <- dates[w:n]

#calculate average
#-----------------
average <- vector()
for(j in seq(from=1, to=d, 1)) # 1, 2
   {
   obligor_average <- sum(dailydata[1:n,j])/n
   average <- cbind(average, obligor_average) 
    }

#name rows and cols
colnames(average) <- obligorname
rownames(average) <- dates[n]

我想有d个情节(每个债务人一个,在这个例子中d = 2)。

首先,在x轴上,这些图中的每一个应该只有几个垂直于x轴的日期。

其次,在图中,

  • “dailydata”系列应该从开始日期(2008年11月18日)开始,到结束日期结束(2008年12月2日)

  • 来自“MAw”的系列应该从“第w个日期”开始(这里w = 3,因此2008年11月20日)并在结束日期(02/12/2008)结束

  • 平均值应该有一条水平线

我唯一拥有的就是这个,

for (i in seq(from=1, to=d, 1)) 
   {
    plot( dailydata[,i], main= obligorname[i], type = "l", col="red", las=1, 
          ylab="dailydata", xlab="time", ylim = c(0, max(dailydata[i])))
    abline(h=average[,i], col="black")
    lines(MAw[,i], col="blue")
   }

没有给出我想要获得的数字,因为MAw系列应该向右移动并且x轴上没有日期。

我是SO和R的新手,也许这不是描述我的问题所需的最少信息量。无论如何,你有什么建议?

我应该使用as.Date作为日期和plot.ts吗?或者我应该使用ggplot2?或者是其他东西?如何?

非常感谢你!

0 个答案:

没有答案