首页 > 解决方案 > 在ggplot中为特定时间段添加两条单独的趋势线

问题描述

块引用

嗨,
我正在尝试为特定时间段(日期)绘制两条单独的趋势线,但没有成功。有人可以建议最好的方法是什么吗?第一行从 11/14 到 12/26,第二行从 1/2 到结束。我想在下面实现的结果。先感谢您!

我使用
日期值的数据框
11/14/2020 18.57
11/21/2020 19.62
11/28/2020 21.81
12/5/2020 21.24
12/12/2020 22.32 12/19/2020
20.79
12/26/2020 21.18
1 /2/2021 21.38
1/9/2021 21.22
1/16/2021 20.45
1/23/2021 19.11
1/30/2021 20.74

ggplot(sns1, aes(x = date, y = metric_value)) + geom_line(size = 1, color = "#E41A1C")

在此处输入图像描述

标签: rggplot2

解决方案


如果您不愿意考虑两种趋势的截止日期部分,您可以geom_smooth()通过指定组在单个语句中完成。

library(ggplot2)

txt <- "date value
11/14/2020 18.57
11/21/2020 19.62
11/28/2020 21.81
12/5/2020 21.24
12/12/2020 22.32
12/19/2020 20.79
12/26/2020 21.18
1/2/2021 21.38
1/9/2021 21.22
1/16/2021 20.45
1/23/2021 19.11
1/30/2021 20.74"

sns1 <- read.table(text = txt, sep = " ", header = TRUE)
sns1$date <- as.Date(sns1$date, format = "%m/%d/%Y")

cutoff <- as.Date("2020/12/26")

ggplot(sns1, aes(date, value)) +
  geom_line() +
  geom_smooth(aes(group = date >= cutoff),
              method = "lm")
#> `geom_smooth()` using formula 'y ~ x'

reprex 包(v1.0.0)于 2021-06-25 创建


推荐阅读