将Time_Series转换为data.frame

时间:2018-05-30 14:48:49

标签: r ggplot2

我有以下结构:

  'data.frame': 240 obs. of  3 variables:
 $ Date  : Date, format: "1998-01-01" "1998-02-01" "1998-03-01" ...
 $ rollDE: Time-Series  from 1 to 240: 0.00289 0.00992 -0.00424 0.07958 -0.035 ...
 $ DE$DE : num  0.00289 0.00992 -0.00424 0.07958 -0.035 ...

我在一个图中为多列的ggplot实现了以下代码。

> ggplot() + 
+   geom_line(data = yy, aes(x= Date, y = x$`rollDE`, color = "rollingmeanDE")) +
+   geom_line(data = yy, aes(x = Date, y = x$`DE$DE`, color = "DEreturn")) +
+   xlab('Date') + ylab('percent.change')

但是,错误如下。

Don't know how to automatically pick scale for object of type ts. Defaulting to continuous.

我已尝试转换$rollDE,但失败了。请转换它或任何其他解决方案的任何评论?

1 个答案:

答案 0 :(得分:1)

使用read.zoo转换为动物园并使用autoplot.zoo。省略facet = NULL以获取两个数据列的单独窗格。在最后的注释中使用yy

library(ggplot2)
library(zoo)

autoplot(read.zoo(yy), facet = NULL) + xlab("Date") + ylab("percentage change")

screenshot

注意

以下是yy的可重现版本。最后一列已经加倍,因此它与之前的列没有相同的值。

yy <- data.frame(
  Date = as.Date(c("1998-01-01", "1998-02-01", "1998-03-01")),
  rollDE = ts(c(0.00289, 0.00992, -0.00424)),
  "DE$DE" = 2*c(0.00289, 0.00992, -0.00424))