如何设置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
相关产品推荐
相关产品推荐

