Создайте ggplot с 1 geom_point и 2 geom_line

Я хочу создать ggplot с 1 geom_point и 2 geom_line (рассчитанными на основе моей переменной, которая будет представлена ​​в моей geom_point)

Вот сценарий, который, хотя и был правильным, но я не могу заставить 2 geom_line появиться на моем ggplot. Однако, когда я меняю их в geom_point, они все отображаются правильно на графике, см. Изображение внизу.

       #Acute/chronique
library(dplyr)
library(ggplot2)
library(gsheet)
library(googlesheets)
library(tidyr)


date <- c("2014-07-06", "2014-07-07","2014-07-08","2014-07-09", "2014-07-09","2014-07-10","2014-07-11","2014-07-12","2014-07-13", "2014-07-14","2014-07-15","2014-07-16","2014-07-17")
par <- c("RPE", "RPE", "RPE", "RPE", "RPE", "RPE", "RPE", "RPE", "RPE", "RPE", "RPE", "RPE", "RPE")
temp <- c(14, 10, 16, 13, 10, 9, 10, 14, 16, 4, 7, 16, 18)

df <- data.frame(date, par, temp)

lag_functions <- setNames(c(paste("(", paste("dplyr::lag(., ", 1:3, ")", collapse = ' + '), ") / 3"),
                            paste("(", paste("dplyr::lag(., ", 1:5, ")", collapse = ' + '), ") / 5")), 
                          c("acute", "chronic"))



ldf<-df%>%
  mutate_at(vars(temp), funs_(lag_functions))


ldf

ggplot(ldf, aes(x = date, y = temp)) +
  geom_point()

ggplot(ldf) + 
  geom_point(aes(x = date, y = temp)) + 
  geom_line(aes(x = date, y = acute), col = 'red') + 
  geom_line(aes(x = date, y = chronic), col = 'blue') + 
  xlab("Date") + 
  ylab("RPE")

Спасибо за помощь

1 ответ

Решение

В виде date это персонаж, которому нужно добавить group эстетический, т.е. добавить, например, group=1 каждому из ваших geom_line

library(dplyr)
library(ggplot2)
library(tidyr)


date <- c("2014-07-06", "2014-07-07","2014-07-08","2014-07-09", "2014-07-09","2014-07-10","2014-07-11","2014-07-12","2014-07-13", "2014-07-14","2014-07-15","2014-07-16","2014-07-17")
par <- c("RPE", "RPE", "RPE", "RPE", "RPE", "RPE", "RPE", "RPE", "RPE", "RPE", "RPE", "RPE", "RPE")
temp <- c(14, 10, 16, 13, 10, 9, 10, 14, 16, 4, 7, 16, 18)

df <- data.frame(date, par, temp)

lag_functions <- setNames(c(paste("(", paste("dplyr::lag(., ", 1:3, ")", collapse = ' + '), ") / 3"),
                            paste("(", paste("dplyr::lag(., ", 1:5, ")", collapse = ' + '), ") / 5")), 
                          c("acute", "chronic"))
ldf<-df%>%
  mutate_at(vars(temp), funs_(lag_functions))

ggplot(ldf) + 
  geom_point(aes(x = date, y = temp)) + 
  geom_line(aes(x = date, y = acute, group = 1), col = 'red') + 
  geom_line(aes(x = date, y = chronic, group = 1), col = 'blue') + 
  xlab("Date") + 
  ylab("RPE")
#> Warning: Removed 3 row(s) containing missing values (geom_path).
#> Warning: Removed 5 row(s) containing missing values (geom_path).

Другие вопросы по тегам