Использование легенды с stat_function в ggplot2
Я использую scale_colour_manual
чтобы указать возможные ключи в легенде. Однако, если я использую stat_function
для stat_function
пользовательской функции, легенда отсутствует.
Любые идеи, почему это происходит?
library(ggplot2)
MyFun <- function(x, p) {
res <- x^(1 / p)
return(res)
}
my.df <-data.frame(x = c(0,1))
plt <- ggplot(my.df, aes(x=x)) +
stat_function(fun = MyFun, n = 1000, args = list(p = 10), colour = "red") +
stat_function(fun = MyFun, n = 1000, args = list(p = 3), colour = "blue") +
stat_function(fun = MyFun, n = 1000, args = list(p = 2), colour = "green") +
stat_function(fun = MyFun, n = 1000, args = list(p = 1), colour = "orange") +
scale_colour_manual(values = c("red", "blue", "green", "orange"))
print(plt)
Ответы
Ответ 1
Поместите colour=
внутри aes()
а затем укажите имя для конкретной строки, как должно появиться в легенде. Обозначения сделаны для эстетики, которые только внутри вызова aes()
.
ggplot(my.df, aes(x=x)) +
stat_function(fun = MyFun, n = 1000, args = list(p = 10), aes(colour = "line1")) +
stat_function(fun = MyFun, n = 1000, args = list(p = 3), aes(colour = "line2")) +
stat_function(fun = MyFun, n = 1000, args = list(p = 2), aes(colour = "line3")) +
stat_function(fun = MyFun, n = 1000, args = list(p = 1), aes(colour = "line4")) +
scale_colour_manual("Lgend title", values = c("red", "blue", "green", "orange"))