r - 在 ggplot 中将日期显示为 x 轴
问题描述
我的数据格式为
["201301",1111],["201302",1111],["201702",2222],["201603",3333].
但是,当我尝试将其绘制为条形图时,它看起来不太好,因为 x 值被视为数字。年份之间有很大的差距。
是否有可能消除差距?
解决方案
如果我理解正确,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
比例的好处是即使缺少数据点也能正确缩放。
推荐阅读
- swift - 裁剪 UIImage 失败
- html - 为什么我的部分没有低于 HTML 和 CSS 的标题?
- java - @EnableZipkinServer vs. @EnableZipkinStreamServer,为什么同一件事有两个注解
- python - Bcrypt.check_password_hash() 在 FLASK 中不起作用
- python - 如何使用 Python 从表中刮取主题和 tbody
- python - 我的代码在上下边界的球反弹并且没有按预期返回中心 0,0 后不起作用
- python - 创建空层时,不会预先实例化 TensorFlow 变量
- json - 在 React 中用 CSS 替换 JSON 值
- javascript - 在条件下将密钥转换为对?
- python - 当我在 Django 中迁移时获取不是有效的 UUID