R语言ggplot绘制秘鲁央行季度GDP时x轴顺序异常如何解决?
解决ggplot x轴季度顺序异常的方案
问题本质
你获取到的Quarter列是字符类型,ggplot2默认会按照字符的字典序排列x轴刻度,而非按照时间先后顺序,因此会出现顺序错乱的问题。
解决方法
方法1:转为有序因子(最简单快捷)
由于你从API拉取到的原始数据本身就是按时间升序返回的,直接将Quarter列转为按数据原有顺序设置层级的有序因子即可:
# 预处理阶段新增这一行代码即可 dt_PBI[, Quarter := factor(Quarter, levels = unique(Quarter), ordered = TRUE)] # 后续绘图代码不变 ggplot(dt_PBI, aes(x=Quarter, y=Millions)) + geom_point()
方法2:转为日期类型(扩展性更强)
如果后续还要做时间序列相关的分析,建议直接把季度字符串转为标准日期格式,ggplot会自动识别时间顺序:
# 把季度字符串转为对应季度的第一天日期 dt_PBI[, Quarter_date := as.Date(paste0( substr(Quarter, 1, 4), # 提取年份 "-", as.integer(substr(Quarter, 6, 6)) * 3 - 2, # 季度转对应第一个月 "-1" ))] # 绘图时用日期列做x轴,可自定义标签显示为季度格式 ggplot(dt_PBI, aes(x=Quarter_date, y=Millions)) + geom_point() + scale_x_date(date_labels = "%YQ%q")
内容的提问来源于stack exchange,提问作者Armando Delgado
相关产品推荐
相关产品推荐

