r - R:如何正确抵消 ggplot2 中每日数据的年季标签?
问题描述
我正在尝试使用 yearquarter 标签而不是原始日期制作一个简单的图,以显示值的发展如何随着季度的变化而变化。但是,当尝试格式化 YQ 标签时,它们似乎有一些偏移,因为它们没有正确启动。看代码和图
library(tidyverse)
library(zoo)
(df_Example <- tibble(Date = seq(as.Date("2019-01-01"), as.Date("2020-12-31"), by = "day"),
Value = 1))
#> # A tibble: 731 x 2
#> Date Value
#> <date> <dbl>
#> 1 2019-01-01 1
#> 2 2019-01-02 1
#> 3 2019-01-03 1
#> 4 2019-01-04 1
#> 5 2019-01-05 1
#> 6 2019-01-06 1
#> 7 2019-01-07 1
#> 8 2019-01-08 1
#> 9 2019-01-09 1
#> 10 2019-01-10 1
#> # ... with 721 more rows
ggplot(data = df_Example, aes(x = Date, y = Value)) +
geom_line() +
scale_x_date(date_breaks = "3 months",
labels = function(x) format.yearqtr(x, "%Y Q%q"))
如图所示,该行在标记开始之前开始。我非常希望这两者能够保持一致。
解决方案
这是一个选项。
library(ggplot2)
library(zoo) # as.yearqtr, as.POSIXct.yearqtr
qtr1 <- function(by) {
function(x) {
xqtr <- as.Date(as.POSIXct(as.yearqtr(x)))
seq(xqtr[1], xqtr[2], by = by)
}
}
ggplot(data = df_Example, aes(x = Date, y = Value)) +
geom_line() +
scale_x_date(breaks = qtr1("3 months"),
labels = function(x) zoo::format.yearqtr(x, "%Y Q%q"))
笔记:
https://stackoverflow.com/a/23046072/3358272表明在某些时候我们本可以完成
as.Date(as.yearqtr(..))
但这似乎不起作用。
as.Date(as.POSIXct(as.yearqtr(.)))
是为了解决这个问题。
推荐阅读
- node.js - 在 nodejs.db2 中触发插入查询时出错
- css - 如何做一个在Angular中部署菜单的“粘性”按钮?
- html - 如何在电子邮件签名中调整css中的图像大小?
- git - github-actions 获取 deployment_status 事件的分支名称或 PR 编号
- ios - EKEventEditViewController EKAlarm 警报标题已损坏
- ios - 如何在 Swift 中使用宽度约束将 Xib 加载到 CollectionView?
- swift - 如何在 Swift 中声明和初始化大于 UInt64 的常量?
- postgresql - 带有部分索引的 SQLAlchemy Postgres upsert
- html - 如何在移动浏览器的网页上显示左右箭头?
- java - 将图片从我的应用存储移动到 Android 10+ 上的 DCIM 或图片目录