如何快速(优雅地)在 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 绘图?的主要内容,如果未能解决你的问题,请参考以下文章

vue3.0+ts+element-plus多页签应用模板:如何优雅地使用Svg图标

如何优雅地循环多个列表[重复]

如何在R中创建ts对象?

如何优雅地检查对象和关联对象的存在?

如何优雅地使用Redis之位图操作

如何优雅地使用Redis之位图操作