如何定义ggplot2 plus运算符?

时间:2016-11-06 15:13:23

标签: r ggplot2 operators

+通常会在提供除数字以外的其他内容时抛出non-numeric argument to binary operator。但它适用于ggplot2,将情节粘贴在一起。同时,它在ggplot2的上下文之外保留其通常的功能(例如作为算术或公式运算符),因此它的ggplot2版本与这两者中的任何一个都不冲突。

我希望了解如何使+以这种方式行事。浏览ggplot2 github repo,我找到了+.gg%+%的函数定义,但它并没有让我更清楚。

我很高兴指向ggplot2包中执行此操作的代码,或者对如何执行此操作的一般化解释。

1 个答案:

答案 0 :(得分:8)

如果您剖析+.gg我们有:

> ggplot2:::`+.gg`
function (e1, e2) 
{
  e2name <- deparse(substitute(e2))
  if (is.theme(e1)) 
    add_theme(e1, e2, e2name)
  else if (is.ggplot(e1)) 
    add_ggplot(e1, e2, e2name)
}

此外,add_theme,您感兴趣的是add_ggplot,可以ggplot2:::add_ggplot访问。后者 - 一个长期但非常有组织的功能 - 揭示更多&#34;级联&#34;用于发送要添加的内容的功能。

话虽如此,R&#34;知道&#34;当使用&#34; +&#34;在类gg的对象上,其功能适用(因为S3 classes)。您可以在ggplot2 GitHub repos中的ggproto.R中找到起点,我认为大多数ggplot2行为取决于此。

这就是你要找的东西吗?