绘制 tsibble 时如何获得更详细的 x 轴?

How to get a more detailed x-axis when plotting a tsibble?

我目前正在关注 预测:原则与实践,第 3 版,可以免费获得 online。要重现我的问题,您需要安装并加载包 fpp3。然后,您需要在 R(或 RStudio)中执行以下操作:

PBS %>%
  filter(ATC2 == "A10") %>%
  select(Month, Concession, Type, Cost) %>%
  summarise(TotalC = sum(Cost)) %>%
  mutate(Cost = TotalC / 1e6) -> a10

定义 a10 后,需要绘制 tsibble,如下所示:

autoplot(a10, Cost) +
  labs(y = "$ (millions)",
       title = "Australian antidiabetic drug sales")

然后你应该得到这样的情节:

大部分情况下没问题,但我希望 x 轴上的刻度数至少是原来的两倍,如果它们可以旋转 45° 左右,则可能更多。我尝试了一些看起来很有希望的东西,将 scale_x_date(date_labels = "%m-%Y") 添加到 plot 对象,但这只适用于 class Date 的对象,这里我们正在处理 yearmonths。在这种情况下如何获得更详细的 x 轴?

一种方法是将 Month 的 class 更改为 class 日期并应用 scale_x_date():

a10 %>% 
  mutate(Month = as.Date(Month)) %>% 
  ggplot(aes(x=Month, y=Cost)) + 
  geom_line() +
  scale_x_date(date_breaks = "1 year")

您可以使用 scale_x_yearmonth() 更改 yearmonth() 的 x 轴刻度。这也适用于其他日期类型,例如 yearquarter()yearweek().

library(fpp3)
PBS %>%
  filter(ATC2 == "A10") %>%
  select(Month, Concession, Type, Cost) %>%
  summarise(TotalC = sum(Cost)) %>%
  mutate(Cost = TotalC / 1e6) -> a10

autoplot(a10, Cost) +
  labs(y = "$ (millions)",
       title = "Australian antidiabetic drug sales") + 
  scale_x_yearmonth(date_breaks = "1 year", date_labels = "%Y")

reprex package (v2.0.1)

于 2021-10-07 创建