ggplot2结合tsibble调整x轴刻度断点与标签的解决方案
tsibble对象x轴刻度配置解决方法
问题原因
{tsibble}内置的时间索引多为yearweek、yearmonth、yearquarter等自定义时间类型,不属于R原生Date格式,因此无法直接适配scale_x_date()的配置规则。
解决方法
方法1:使用对应时间类型的专属scale函数(推荐)
针对不同的时间索引类型,直接替换scale_x_date()为对应函数即可,参数用法和scale_x_date()完全兼容:- 周度索引(yearweek):用
scale_x_yearweek() - 月度索引(yearmonth):用
scale_x_yearmonth() - 季度索引(yearquarter):用
scale_x_yearquarter() - 年度索引:用
scale_x_year()
你提供的测试代码修正后如下:
# metapackage library(fpp3) # data melsyd_economy <- ansett %>% filter(Airports == "MEL-SYD", Class == "Economy") %>% mutate(Passengers = Passengers/1000) # plot autoplot(melsyd_economy, Passengers) + labs(title = "Ansett airlines economy class", subtitle = "Melbourne-Sydney", y = "Passengers ('000)") + # 替换为对应周度的scale函数,参数完全沿用原scale_x_date的配置即可 scale_x_yearweek(date_labels = "%Y", date_breaks = "2 year")- 周度索引(yearweek):用
方法2:将时间索引转换为原生Date类
如果需要统一用scale_x_date()配置,可以手动把索引列转为Date格式:autoplot(melsyd_economy, aes(x = as.Date(Week), y = Passengers)) + labs(title = "Ansett airlines economy class", subtitle = "Melbourne-Sydney", y = "Passengers ('000)") + # 转成Date后就可以正常调用scale_x_date scale_x_date(date_labels = "%Y", date_breaks = "2 year")
内容的提问来源于stack exchange,提问作者Alberson Miranda
相关产品推荐
相关产品推荐

