【问题标题】:R: unused argument in layer functionR:层函数中未使用的参数
【发布时间】:2018-11-01 22:15:59
【问题描述】:

我正在尝试在 R 中绘制一个数学函数。 我试图从以下网站重新创建代码: https://rpubs.com/kaz_yos/ggplot2-stat-function

这是我的代码:

a <- 1;
b <- 1;

p <- ggplot(data = data.frame(x = 0), mapping = aes(x = x))

brem_nosc <- function(x) (1 + x^2 - (2*x/3))*(log(x) - (1/2))

p + layer(geom = "path",        # Default. Can be omitted.
          stat = "function",
          fun = brem_nosc,          # Give function
          mapping = aes(color = "fun.1") # Give a meaningful name to color
          ) +
  scale_x_continuous(limits = c(-5,5)) +
  scale_color_manual(name = "Function", values = c("blue"))

但是我收到以下错误:

Error in layer(geom = "path", stat = "function", fun = brem_nosc, mapping = aes(color = "fun.1")) : 
  unused argument (fun = brem_nosc)

我无法弄清楚为什么该功能没有被识别。可能是什么问题? 感谢阅读

【问题讨论】:

  • 文档 (?ggplot2::layer) 不建议参数 fun=。它确实说如果data=function,当它被称为 " 带有单个参数时,绘图数据。返回值必须是'data.frame。',并将用作图层数据。” 对我来说,这表明您的 brem_nosc 应该返回一个帧。 (除非我误解了您的需求或layer。)(仅供参考:ggplot2-3.0.0)
  • @r2evans 我已将函数转换为数据帧并应用了 ggplot。谢谢!
  • 我在这里rpubs.com/kaz_yos/ggplot2-stat-function 找到了这个有趣的论点,我无法复制它。如果有关于这个问题的代码解决方案,那就太好了。

标签: r ggplot2 layer


【解决方案1】:

当 layer 的 'stat' 参数设置为“function”时,函数必须在分配给 'params' 参数的列表中传递。使用您的示例,您应该输入

p + layer(geom = "path", stat = "function", params = list(fun = brem_nosc),mapping = aes(color = "fun.1"))

【讨论】:

    猜你喜欢
    • 2020-03-14
    • 2015-10-01
    • 2021-09-18
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    相关资源
    最近更新 更多