在ggplot2中使用带有stat_function的图例

And*_*rej 15 r ggplot2

我scale_colour_manual用来指定图例中可能的键.但是,如果我使用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)
Run Code Online (Sandbox Code Playgroud)

Did*_*rts 38

放入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"))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • @zakrapovic刚刚检查了最新的R和ggplot2版本,对我来说没有问题. (4认同)