在ggplot中缩短图形时间周期的简单方法

Simple way to shorten time period of graph in ggplot

让我们考虑数据:

library(ggplot2)
library(quantmod)
start <- as.Date("2013-01-01")
end <- as.Date("2016-10-01")
# Apple stock
getSymbols("AAPL", src = "yahoo", from = start, to = end) 

和情节:

autoplot(Cl(AAPL))

我的问题是:有什么办法可以简单地缩短情节的时间段吗?比方说,我想让我的情节从“2013-01-01”到“2014-01-01”。当然,我可以通过更改 startend 变量(在最开始定义的)并重新下载数据集来做完全相同的事情。但是我发现这个解决方案效率低下。有没有更简单的方法可以执行它?

您可以向 autoplot 添加一个 xlim = 参数:

autoplot(Cl(AAPL),
         xlim = as.Date(c("2014-01-01","2016-04-01")))

如果您愿意,也可以使用 + 运算符:

autoplot(Cl(AAPL)) +
  xlim(as.Date(c("2014-01-01","2016-04-01")))

有关更多信息,请参阅 help(autoplot.zoo)

有两种方法。一种是指定绘图例程的限制,另一种是对数据本身进行子集化。由于第一个已经由另一个答案说明,我们将关注第二个:

# xts suppports .../... notation
apple <- Cl(AAPL)['2013-01-01/2014-01-01']

# this will extract all rows for 2013
apple <- Cl(AAPL)['2013']

# window function
apple <- window(Cl(AAPL), start = "2013-01-01", end = "2014-01-01")

定义 apple 我们可以 autoplot 它。