在自定义函数中使用ggplot stat_function“ group”

时间:2018-10-04 09:51:00

标签: r ggplot2

如果您阅读ggplot的{​​{1}} help,则会看到:

  

stat_function理解以下美感(必需   美学以粗体显示):

     
      
  •   
  • y
  •   

但是没有如何使用它的示例。

就我而言,我想访问自定义函数中的“组” ae。这是我不幸的尝试(只能绘制一条曲线,而不是每组绘制1条曲线):

stat_function

奇怪的是,我无法使调试器在df = data.frame(A=1:10, B=rep(seq(1,1.8,by=0.2), 2), myGroup=c(rep("Group1", 5), rep("Group2", 5))) log.test = function(x, data, ...) { y = log(data$A + x*data$B) return(y) } ggplot(df) + xlim(0,50) + ylim(0,50) + labs(x="time", y="Y", color="Group") + stat_function(aes(group=myGroup), fun=log.test, args=list(data=df)) 内部运行,因此我不知道哪个变量可用。

请注意,这将与log.test而非geom_abline(aes(intercept=A,slope=B,color=myGroup))完美配合。

我在这里可能有一个很大的误解,但是我找不到它。

1 个答案:

答案 0 :(得分:0)

尝试一下:

df = data.frame(A=1:10, B=rep(seq(1,1.8,by=0.2), 2), 
                myGroup=c(rep("Group1", 5), rep("Group2", 5))) #you don't even need to define df here because you're passing all the arguments inside mapply 

log.test = function(x,A,B) {
  y = log(A + x*B)
  return(y)
}

ggplot(data.frame(x = c(0, 50)), aes(x)) + 
  mapply(function(A, B, myGroup) {
    stat_function(fun = log.test, args = list(A = A, B = B), col = myGroup)
  }, 
  # enter A, B, and colors here
  A = c(0, 10), 
  B=rep(seq(1,1.8,by=0.2), 2), 
  myGroup=c(rep("red", 5), rep("green", 5)))

enter image description here