#r #ggplot2
#r #ggplot2
Вопрос:
Давайте составим некоторые данные, которые являются зашумленным синусом:
xx <- sort(runif(125, 0, 2 * pi))
yy <- sin(xx) rnorm(length(xx), sd = 0.3)
data <- data.frame(x = xx, y = yy)
Добавьте соответствие по lowess для разных параметров:
ff <- c(2/3, 1/3, 1/10)
for (n in 1:length(ff)) {
data[[paste("f", n, sep="")]] <- lowess(data$y ~ data$x, f = ff[n])$y
}
Теперь постройте график на одной диаграмме:
ggplot(data)
geom_point(aes(x = x, y = y, color = "samples"))
geom_function(fun = sin, aes(x = x, color = "original sine"))
geom_line(aes(x = x, y = f1, color = "f1"))
geom_line(aes(x = x, y = f2, color = "f2"))
geom_line(aes(x = x, y = f3, color = "f3"))
С этим связано несколько проблем.
Прежде всего, как заменить последнюю часть циклом for? Т.е. что-то вроде:
p <- ggplot(data)
geom_point(aes(x = x, y = y, color = "samples"))
geom_function(fun = sin, aes(x = x, color = "original sine"))
for (f in ff) {
p <- p geom_line(aes(x = x, y = f))
}
p
Во-вторых, это color =
не похоже на правильный способ прикрепления метки легенды.
Как получить разные цвета и прикрепить метку?
Наконец, я хотел бы изменить тип строки на пунктирную для строк в цикле.
Спасибо.
Комментарии:
1. Преобразуйте ширину в длину, затем постройте график.
Ответ №1:
Получить столбцы, начинающиеся с "f"
в длинном формате, а затем отобразить :
library(tidyr)
library(ggplot2)
data %>%
pivot_longer(cols = starts_with('f')) %>%
ggplot() geom_point(aes(x = x, y = y, color = "samples"))
geom_function(fun = sin, aes(x = x, color = "original sine"))
geom_line(aes(x = x, y = value, color = name), linetype = 'dashed')
Комментарии:
1. да, это выглядит лучше, чем мои попытки; как удалить / заменить «цвет» чем-то значимым? кроме того, в легенде тип строки не показан.
2. вы можете добавить
labs(color='legend title')
, чтобы включить заголовок легенды.