现在Date
是一个因素,而不是真正的 R 日期对象。您可以使用strptime
将字符串解析为POSIXct
对象。这将产生更好的结果。
与您的问题没有直接关系,但此外,您可以使用facet_wrap
拆分时间序列并将它们堆叠在一起。我写了一个小函数来计算所需的索引facet_wrap
:
createTimeseriesCutupIdx = function(ncuts, nrows, labels) {
if(missing(labels)) labels = LETTERS[1:ncuts]
pointsPerCutup = floor((1/ncuts) * nrows)
idx = rep(labels, each = pointsPerCutup)
if(length(idx) < nrows) {
idx[(length(idx) + 1):nrows] <- idx[length(idx)]
}
return(idx)
}
以及如何使用它的示例:
require(ggplot2); theme_set(theme_bw())
tserie_length = 5000
df = data.frame(t = as.POSIXct("2006-01-01") + (1:tserie_length) * 3600,
value = runif(tserie_length))
ggplot(df, aes(x = t, y = value)) + geom_line()
df$idx = createTimeseriesCutupIdx(ncuts = 5, nrows = nrow(df))
ggplot(df, aes(x = t, y = value)) +
geom_line() +
facet_wrap(~ idx, scales = "free_x", ncol = 1)
这使得以有意义的方式绘制更大的时间序列成为可能。