R ggplot2 autoplot()函数。怎么了?

时间:2017-12-17 02:08:22

标签: r plot ggplot2 time-series timeserieschart

我有一个数据集" bc"用2285观察两个变量:"日期"和"价格"。

  tsbc <- ts(bc)

我尝试将时间序列对象创建为:

  autoplot(tsbc)

然后,我用了:

from pubnub.pubnub import PubNub

我得到的数字如下: Plot-Image 然而,情节并非如此。你能帮我理解为什么吗?

2 个答案:

答案 0 :(得分:2)

以下是基于xts的解决方案:

library(ggplot2)

# Generate a dataset
set.seed(1)
bc <- data.frame(Date=seq(as.Date("2016/1/1"), as.Date("2017/12/14"), "days"),
                 Price= cumsum(rnorm(714)))
#   'data.frame':   714 obs. of  2 variables:
# $ Date : Date, format: "2016-01-01" "2016-01-02" ...
# $ Price: num  -0.626 -0.443 -1.278 0.317 0.646 ...

library(xts)
tsbc <- xts(bc$Price, order.by=bc$Date)
autoplot(tsbc)

enter image description here

否则,使用ts

tsbc <- ts(bc$Price, start=c(2016,1), frequency=365)
autoplot(tsbc) + scale_x_yearmon(n=5)

enter image description here

答案 1 :(得分:2)

问题是您如何创建时间序列对象tsbc。你实际上正在创建两个时间序列。由于日期只是带有class属性的数字,因此当您调用ts时,它们会失去属性。这就是autoplotDate绘制一条线的原因,它绘制了代表相应日期的双打(有关详细信息,请参阅?base::Dates)。这显然不是你想要的。请参阅@ Marco的答案,了解如何构造ts对象。

但是,你甚至不需要这样做。为什么不简单

library(ggplot2)
ggplot(bc, aes(Date, Price)) + geom_line()