【发布时间】:2021-10-09 02:22:10
【问题描述】:
我有每年收集的数据,我试图将它们一起绘制。 对于每一年,都有一些随机日期子集的数据可用。 例如:
library(tidyverse)
library(lubridate)
#>
#> Attaching package: 'lubridate'
#> The following objects are masked from 'package:base':
#>
#> date, intersect, setdiff, union
set.seed(123)
year1 <- seq(ymd("2019-03-01"), ymd("2019-10-31"), by = "day")
year2 <- seq(ymd("2020-07-01"), ymd("2020-10-31"), by = "day")
year3 <- seq(ymd("2021-03-01"), ymd("2021-10-31"), by = "day")
dat <- tibble(date = sort(c(sample(year1, 50),
sample(year2, 50),
sample(year3, 50))),
value = runif(150)) |>
mutate(year = year(date))
dat
#> # A tibble: 150 × 3
#> date value year
#> <date> <dbl> <dbl>
#> 1 2019-03-07 0.265 2019
#> 2 2019-03-14 0.565 2019
#> 3 2019-03-23 0.913 2019
#> 4 2019-03-26 0.902 2019
#> 5 2019-04-01 0.274 2019
#> 6 2019-04-12 0.321 2019
#> 7 2019-04-19 0.986 2019
#> 8 2019-04-22 0.620 2019
#> 9 2019-05-11 0.937 2019
#> 10 2019-05-13 0.467 2019
#> # … with 140 more rows
我想绘制线,使 x 轴代表 1 年,并且每年都有一条单独的线。 如果我只是将日期放在 x 轴上,每年都会按顺序显示,正如我们所期望的那样,但 x 轴上基本上是 3 年。
ggplot(dat, aes(x = date, y = value)) +
geom_line(aes(color = factor(year))) +
scale_x_date(breaks = "3 months", date_labels = "%B")
我尝试使用构面作为解决方法。 这个有一个类似的问题,在 x 轴上有三年。
ggplot(dat, aes(x = date, y = value)) +
facet_wrap(~year, ncol = 1) +
geom_line(aes(color = factor(year))) +
scale_x_date(breaks = "3 months", date_labels = "%B")
我可以释放天平,但是轴不对齐,所以很难跨年比较。
ggplot(dat, aes(x = date, y = value)) +
facet_wrap(~year, ncol = 1, scales = "free_x") +
geom_line(aes(color = factor(year))) +
scale_x_date(breaks = "2 months", date_labels = "%B")
为了说明我要查找的内容,我可以强制所有日期的年份为 2020。
这导致了我想要的情节,但似乎必须有比更改所有日期更好的方法?
year(dat$date) <- 2020
ggplot(dat, aes(x = date, y = value)) +
facet_wrap(~year, ncol = 1) +
geom_line(aes(color = factor(year))) +
scale_x_date(breaks = "2 months", date_labels = "%B")
由reprex package (v2.0.0) 于 2021 年 8 月 3 日创建
会话信息sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#> setting value
#> version R version 4.1.0 (2021-05-18)
#> os macOS Big Sur 10.16
#> system x86_64, darwin17.0
#> ui X11
#> language (EN)
#> collate en_US.UTF-8
#> ctype en_US.UTF-8
#> tz America/Chicago
#> date 2021-08-03
#>
#> ─ Packages ───────────────────────────────────────────────────────────────────
#> package * version date lib source
#> assertthat 0.2.1 2019-03-21 [1] CRAN (R 4.1.0)
#> backports 1.2.1 2020-12-09 [1] standard (@1.2.1)
#> broom 0.7.9 2021-07-27 [1] CRAN (R 4.1.0)
#> cellranger 1.1.0 2016-07-27 [1] standard (@1.1.0)
#> cli 3.0.1 2021-07-17 [1] CRAN (R 4.1.0)
#> colorspace 2.0-2 2021-06-24 [1] CRAN (R 4.1.0)
#> crayon 1.4.1 2021-02-08 [1] CRAN (R 4.1.0)
#> curl 4.3.2 2021-06-23 [1] CRAN (R 4.1.0)
#> DBI 1.1.1 2021-01-15 [1] standard (@1.1.1)
#> dbplyr 2.1.1 2021-04-06 [1] standard (@2.1.1)
#> digest 0.6.27 2020-10-24 [1] CRAN (R 4.1.0)
#> dplyr * 1.0.7 2021-06-18 [1] CRAN (R 4.1.0)
#> ellipsis 0.3.2 2021-04-29 [1] CRAN (R 4.1.0)
#> evaluate 0.14 2019-05-28 [1] standard (@0.14)
#> fansi 0.5.0 2021-05-25 [1] CRAN (R 4.1.0)
#> farver 2.1.0 2021-02-28 [1] standard (@2.1.0)
#> forcats * 0.5.1 2021-01-27 [1] standard (@0.5.1)
#> fs 1.5.0 2020-07-31 [1] standard (@1.5.0)
#> generics 0.1.0 2020-10-31 [1] standard (@0.1.0)
#> ggplot2 * 3.3.5.9000 2021-07-18 [1] Github (tidyverse/ggplot2@13c0730)
#> glue 1.4.2 2020-08-27 [1] CRAN (R 4.1.0)
#> gtable 0.3.0 2019-03-25 [1] standard (@0.3.0)
#> haven 2.4.1 2021-04-23 [1] standard (@2.4.1)
#> highr 0.9 2021-04-16 [1] standard (@0.9)
#> hms 1.1.0 2021-05-17 [1] CRAN (R 4.1.0)
#> htmltools 0.5.1.1 2021-01-22 [1] standard (@0.5.1.1)
#> httr 1.4.2 2020-07-20 [1] standard (@1.4.2)
#> jsonlite 1.7.2 2020-12-09 [1] CRAN (R 4.1.0)
#> knitr 1.33 2021-04-24 [1] standard (@1.33)
#> labeling 0.4.2 2020-10-20 [1] standard (@0.4.2)
#> lifecycle 1.0.0 2021-02-15 [1] CRAN (R 4.1.0)
#> lubridate * 1.7.10 2021-02-26 [1] standard (@1.7.10)
#> magrittr 2.0.1 2020-11-17 [1] CRAN (R 4.1.0)
#> mime 0.11 2021-06-23 [1] CRAN (R 4.1.0)
#> modelr 0.1.8 2020-05-19 [1] standard (@0.1.8)
#> munsell 0.5.0 2018-06-12 [1] standard (@0.5.0)
#> pillar 1.6.1 2021-05-16 [1] CRAN (R 4.1.0)
#> pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.1.0)
#> purrr * 0.3.4 2020-04-17 [1] standard (@0.3.4)
#> R6 2.5.0 2020-10-28 [1] CRAN (R 4.1.0)
#> Rcpp 1.0.7 2021-07-07 [1] CRAN (R 4.1.0)
#> readr * 2.0.0 2021-07-20 [1] CRAN (R 4.1.0)
#> readxl 1.3.1 2019-03-13 [1] standard (@1.3.1)
#> reprex 2.0.0 2021-04-02 [1] standard (@2.0.0)
#> rlang 0.4.11 2021-04-30 [1] CRAN (R 4.1.0)
#> rmarkdown 2.9.5 2021-07-30 [1] Github (rstudio/rmarkdown@bc936f7)
#> rstudioapi 0.13 2020-11-12 [1] standard (@0.13)
#> rvest 1.0.1 2021-07-26 [1] CRAN (R 4.1.0)
#> scales 1.1.1 2020-05-11 [1] standard (@1.1.1)
#> sessioninfo 1.1.1 2018-11-05 [1] standard (@1.1.1)
#> stringi 1.7.3 2021-07-16 [1] CRAN (R 4.1.0)
#> stringr * 1.4.0 2019-02-10 [1] CRAN (R 4.1.0)
#> styler 1.5.1 2021-07-13 [1] CRAN (R 4.1.0)
#> tibble * 3.1.3 2021-07-23 [1] CRAN (R 4.1.0)
#> tidyr * 1.1.3 2021-03-03 [1] standard (@1.1.3)
#> tidyselect 1.1.1 2021-04-30 [1] standard (@1.1.1)
#> tidyverse * 1.3.1 2021-04-15 [1] standard (@1.3.1)
#> tzdb 0.1.2 2021-07-20 [1] CRAN (R 4.1.0)
#> utf8 1.2.2 2021-07-24 [1] CRAN (R 4.1.0)
#> vctrs 0.3.8 2021-04-29 [1] CRAN (R 4.1.0)
#> withr 2.4.2 2021-04-18 [1] CRAN (R 4.1.0)
#> xfun 0.24 2021-06-15 [1] standard (@0.24)
#> xml2 1.3.2 2020-04-23 [1] CRAN (R 4.1.0)
#> yaml 2.2.1 2020-02-01 [1] standard (@2.2.1)
#>
#> [1] /Library/Frameworks/R.framework/Versions/4.1/Resources/library
【问题讨论】: