1

我目前正在关注《预测:原则与实践》,第 3 版,可在线获取。要复制我的问题,您需要安装然后加载包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 轴有些错误的 tsibble 图

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

4

2 回答 2

1

一种方法可能是将班级更改Month为班级日期并申请scale_x_date()

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

在此处输入图像描述

于 2021-10-06T20:11:55.280 回答
1

yearmonth()您可以更改使用的 x 轴比例scale_x_yearmonth()。这也适用于其他日期类型,如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 包于 2021-10-07 创建(v2.0.1)

于 2021-10-06T22:03:23.130 回答