【问题标题】:Display Date in ggplot as x axis在 ggplot 中将日期显示为 x 轴
【发布时间】:2019-05-07 03:56:46
【问题描述】:

我的数据格式为

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

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

是否可以消除差距?

【问题讨论】:

  • 您可以使用您尝试生成给定图的代码添加一些数据吗?如果您将V1 视为因素,它很可能会被消除。

标签: r dataframe ggplot2


【解决方案1】:

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

我可以通过

重现问题
# 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 变为日期 2013-04-01。因此,每个年月都映射到该月的第一天。

借助lubridate 包我们得到

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

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

【讨论】:

    猜你喜欢
    • 2018-03-30
    • 2019-04-27
    • 2021-04-08
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    相关资源
    最近更新 更多