ggplot 将平均线添加到特定月份的方面

use*_*427 3 r ggplot2

我正在尝试为我拥有的每一年的时间序列 ggplot 图添加“3”月份的“平均”线。

我想通过facets- 我尝试过等的平均值绘制一条水平线group_bymutate但无法使其正常工作。

预期输出将只是基于每个方面的水平线,基于该方面的月“3”平均值。

代码:

dat %>% 
  ggplot(aes(x = day, y = NO2)) +
  geom_line() +
  facet_grid(~year)
Run Code Online (Sandbox Code Playgroud)

数据:

dat <- structure(list(station_location = c("Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen", "Pza del Carmen", "Pza del Carmen", "Pza del Carmen", 
"Pza del Carmen"), date = structure(c(16495, 16496, 16497, 16498, 
16499, 16500, 16501, 16502, 16503, 16504, 16505, 16506, 16507, 
16508, 16509, 16510, 16511, 16512, 16513, 16514, 16515, 16516, 
16517, 16518, 16519, 16520, 16521, 16522, 16523, 16524, 16525, 
16861, 16862, 16863, 16864, 16865, 16866, 16867, 16868, 16869, 
16870, 16871, 16872, 16873, 16874, 16875, 16876, 16877, 16878, 
16879, 16880, 16881, 16882, 16883, 16884, 16885, 16886, 16887, 
16888, 16889, 16890, 16891, 17226, 17227, 17228, 17229, 17230, 
17231, 17232, 17233, 17234, 17235, 17236, 17237, 17238, 17239, 
17240, 17241, 17242, 17243, 17244, 17245, 17246, 17247, 17248, 
17249, 17250, 17251, 17252, 17253, 17254, 17255, 17256, 17591, 
17592, 17593, 17594, 17595, 17596, 17597, 17598, 17599, 17600, 
17601, 17602, 17603, 17604, 17605, 17606, 17607, 17608, 17609, 
17610, 17611, 17612, 17613, 17614, 17615, 17616, 17617, 17618, 
17619, 17620, 17621, 17956, 17957, 17958, 17959, 17960, 17961, 
17962, 17963, 17964, 17965, 17966, 17967, 17968, 17969, 17970, 
17971, 17972, 17973, 17974, 17975, 17976, 17977, 17978, 17979, 
17980, 17981, 17982, 17983, 17984, 17985, 17986), class = "Date"), 
    yvar = c(31, 35, 51, 55, 50, 62, 83, 62, 74, 80, 82, 77, 
    54, 38, 39, 48, 54, 49, 36, 36, 36, 37, 58, 41, 32, 38, 44, 
    57, 40, 54, 69, 70, 57, 48, 45, 35, 33, 39, 46, 46, 43, 50, 
    50, 49, 51, 54, 72, 64, 47, 35, 41, 53, 46, 55, 44, 48, 35, 
    21, 23, 34, 53, 34, 42, 53, 48, 26, 25, 34, 45, 71, 79, 80, 
    59, 31, 30, 43, 44, 45, 58, 65, 59, 43, 33, 29, 37, 50, 48, 
    30, 32, 47, 59, 57, 44, 39, 60, 33, 34, 37, 39, 41, 57, 55, 
    42, 21, 28, 48, 47, 28, 35, 33, 38, 44, 44, 51, 59, 60, 31, 
    39, 55, 47, 47, 28, 20, 30, 56, 49, 34, 13, 22, 16, 18, 34, 
    38, 38, 41, 37, 29, 39, 58, NA, NA, NA, 29, 30, 42, 44, 33, 
    29, 32, 24, 44, 48, 34, 27, 26), year = c(2015L, 2015L, 2015L, 
    2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 
    2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 
    2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 
    2015L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 
    2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 
    2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 
    2016L, 2016L, 2016L, 2016L, 2016L, 2017L, 2017L, 2017L, 2017L, 
    2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 
    2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 
    2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 
    2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 
    2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 
    2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 
    2018L, 2018L, 2018L, 2018L, 2019L, 2019L, 2019L, 2019L, 2019L, 
    2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 
    2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 
    2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L), 
    month = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), day = c(1L, 2L, 3L, 4L, 
    5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 
    18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 
    30L, 31L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 
    13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 
    25L, 26L, 27L, 28L, 29L, 30L, 31L, 1L, 2L, 3L, 4L, 5L, 6L, 
    7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 
    19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 
    31L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 
    14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 
    26L, 27L, 28L, 29L, 30L, 31L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 
    8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 
    20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L
    )), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-155L))
Run Code Online (Sandbox Code Playgroud)

Stu*_*olf 8

您可以使用 geom_smooth,并适合仅截取线:

dat %>% 
ggplot(aes(x = day, y = yvar)) +
geom_line() +
geom_smooth(method="lm",formula=y~1,se=FALSE)+
facet_grid(~year)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

这是有效的,因为如果你拟合一个线性模型,例如 lm(y~1),这是一个仅截距模型,截距将是平均值。