Создайте 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).