【问题标题】:How to get a more detailed x-axis when plotting a tsibble?绘制 tsibble 时如何获得更详细的 x 轴?
【发布时间】:2021-11-26 23:43:30
【问题描述】:

我目前正在关注 Forecasting: Principles and Practice,第 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") 添加到绘图对象中,但这只适用于Date 类的对象,而这里我们正在处理yearmonths。在这种情况下如何获得更详细的 x 轴?

【问题讨论】:

    标签: r plot time time-series tsibble


    【解决方案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")
    

    【讨论】:

    • 你是真正的英雄
    【解决方案2】:

    您可以使用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 创建于 2021-10-07 (v2.0.1)

    【讨论】:

      猜你喜欢
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      • 2018-12-12
      • 2021-04-06
      • 1970-01-01
      • 2020-03-26
      • 2015-07-31
      相关资源
      最近更新 更多