You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置gg_season绘图的X轴范围为[January, August]?

问题描述

使用fpp3包的gg_season()函数生成抗糖尿病药物销量季节图后,希望将X轴范围限制在[January, August],原实现代码如下:

library(fpp3)

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

a10 |>
  gg_season(Cost, labels = "both") +
  labs(y = "$ (millions)",
       title = "Seasonal plot: Antidiabetic drug sales")

代码及图表来源:《Forecasting: Principles and Practice (3rd ed)》

解决方法

gg_season()基于ggplot2实现,可通过ggplot2的刻度调整工具限制X轴范围,以下是两种实用方案:

方案一:通过日期范围精准限制

直接指定X轴的日期区间,由于gg_season按月份聚合展示,年份可任意选取不影响最终效果:

a10 |>
  gg_season(Cost, labels = "both") +
  labs(y = "$ (millions)",
       title = "Seasonal plot: Antidiabetic drug sales") +
  scale_x_date(
    limits = as.Date(c("2000-01-01", "2000-08-01")),
    date_labels = "%b",
    breaks = "month"
  )

方案二:针对月份因子直接筛选

gg_season会将月份转换为有序因子,可直接指定需要显示的月份水平:

a10 |>
  gg_season(Cost, labels = "both") +
  labs(y = "$ (millions)",
       title = "Seasonal plot: Antidiabetic drug sales") +
  scale_x_discrete(limits = month.abb[1:8])

month.abb是R内置的月份缩写向量,1:8对应从January到August的所有月份。

内容的提问来源于stack exchange,提问作者umbe1987

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 21:29:58