首页 > 解决方案 > 在 ggplot 中将日期显示为 x 轴

问题描述

我的数据格式为

["201301",1111],["201302",1111],["201702",2222],["201603",3333].

但是,当我尝试将其绘制为条形图时,它看起来不太好,因为 x 值被视为数字。年份之间有很大的差距。 在此处输入图像描述

是否有可能消除差距?

标签: rdataframeggplot2

解决方案


如果我理解正确,OP 希望显示月度数据,其中年和月在变量中以“YYYYMM”格式编码V1

我可以通过

# create sample data
years <- 2013:2017
DF <- data.frame(V1 = 100 * rep(years, each = 12) + rep(1:12, length(years)),
                 V2 = rep(1:12, length(years)))

library(ggplot2)
ggplot(DF, aes(V1, V2)) +
         geom_col()

在此处输入图像描述

要绘制这些月度数据,V1需要将其转换为成熟的日期,例如,201304变成 date 2013-04-01。因此,每个年月都映射到该月的第一天。

lubridate我们得到的包的帮助下

ggplot(DF, aes(lubridate::ymd(V1, truncated = 1L), V2)) +
  geom_col()

在此处输入图像描述

ggplot()认识到 x 轴现在是一个Date类并相应地缩放。使用Date比例的好处是即使缺少数据点也能正确缩放。


推荐阅读