[英]R: How to properly offset yearquarter labels for daily data in ggplot2?
我正在尝试使用 yearquarter 标签而不是原始日期制作一个简单的 plot,以显示值的发展如何随着季度的变化而变化。 但是,当尝试格式化 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(.)))
是为了解决这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.