如何快速(优雅地)在 R 中的时间序列对象 `ts` 和日期框架之间进行迭代以进行 ggplot2 绘图?
Posted
技术标签:
【中文标题】如何快速(优雅地)在 R 中的时间序列对象 `ts` 和日期框架之间进行迭代以进行 ggplot2 绘图?【英文标题】:How to quickly (and elegantly) iterate between time series objects `ts` and date frames in R for ggplot2 plotting? 【发布时间】:2015-02-15 08:42:15 【问题描述】:我正在寻求有关如何在 R 中快速迭代时间序列对象和日期框架的指导,以便我在 ggplot2
中绘图,但允许对时间序列进行一般分析,如 ts()
。
例如,以下感觉很笨拙:
library(ggplot2)
library(lubridate)
library(forecast)
AP <- AirPassengers
df <- data.frame(date=as.Date(time(AP)), Y=as.matrix(AP))
ggplot(df, aes(x=factor(month(date)), y=Y)) +
geom_boxplot()
此外,我失去了(?)以这种方式使用ggplot2::scale_x_date
的能力?
问题的本质:如何在代码中快速绘制图表的结果使用ggplot2
,最好使用x轴的月份标签而希望跳过更少的箍?
我意识到我可以使用:
boxplot(AP ~ cycle(AP))
但我想使用ggplot2
以获得更大的灵活性。
【问题讨论】:
我在运行您的代码时遇到了一些错误。您确定AP
应该转换为 Date
类吗?
@DavidArenburg 抱歉,忘记了 library(forecast)
包依赖项。
【参考方案1】:
嗯,这似乎行得通。
library(xts)
library(ggplot2)
AP <- AirPassengers
df <- data.frame(date=as.Date(time(AP)), Y=as.matrix(AP))
ggplot(df)+geom_boxplot(aes(x=format(date,"%m"),y=Y))+
scale_x_discrete("",labels=unique(format(df$date,"%b")))
【讨论】:
以上是关于如何快速(优雅地)在 R 中的时间序列对象 `ts` 和日期框架之间进行迭代以进行 ggplot2 绘图?的主要内容,如果未能解决你的问题,请参考以下文章