вывод данных и интерполирующий сплайн с легендой

#r #ggplot2 #spline

#r #ggplot2 #сплайн

Вопрос:

Пример данных:

 x <- seq(0, 1, by = 0.1)
y <- c(1, 2.1, 3, 2, 1, 0, -3, -2, 0, 0.5, 1)
xpred <- seq(0, 1, by = 0.01)
ypred <- spline(x, y, xout = xpred)$y
y1 <- y   runif(length(y))
ypred1 <- spline(x, y1, xout = xpred)$y
nx <- length(x)
nxpred <- length(xpred)
foo <- data.frame(x = c(x, xpred, x, xpred), y =c(y, ypred, y1, ypred1),
       type = rep(c(rep("data", times = nx), rep("spline", times = nxpred))), 
       experiment = rep(c("A", "B"), each = nx   nxpred ))
  

Для каждого аспекта я хотел бы отобразить данные, используя синие точки для данных и красную непрерывную линию для интерполяции сплайнов. Кроме того, я хотел бы получить красивую легенду с записями «Данные» и «Сплайн»: очевидно, что легенда одинакова для всех аспектов. Я могу построить точки и линию:

 library(dplyr)
library(ggplot2)
ggplot(data = filter(foo, type =="spline"), aes(x=x, y=y))  
geom_line(color = "tomato")  
geom_point(data = filter(foo, type =="data"), color ="blue")  
facet_wrap(~ experiment, labeller = "label_both")
  

введите описание изображения здесь

Как я могу добавить легенду?

Ответ №1:

 ggplot(data = filter(foo, type =="spline"), aes(x=x, y=y))  
  geom_line(aes(color = "Spline"))  
  geom_point(data = filter(foo, type =="data"), aes(color ="Data"))  
  facet_wrap(~ experiment, labeller = "label_both") 
  scale_colour_manual(name="Legend",values=c("blue","tomato"))
  

Если вам нужна легенда, вам нужны цвета в вашем aes() .
В aes я задаю имена (редактирую по своему усмотрению), которые будут отображаться в легенде.
В scale_colour_manual я определяю цвета (синий и томатный)

Ответ №2:

Что-то подобное должно сработать для вас:

 ggplot(data=foo)   
geom_point(data=foo[foo$type=='data',], aes(x, y), col='red')   
geom_line(data=foo[foo$type=='spline',], aes(x, y), col='blue')   
facet_wrap(~experiment)
  

введите описание изображения здесь