如何使用wrap函数在GGally :: ggpairs中使用loess方法

时间:2016-01-29 13:03:31

标签: r ggplot2 loess ggally

我试图复制Coursera R回归模型课程中给出的这个简单例子:

ggpairs()

我希望看到一个6x6对图 - 一个散点图,黄土更平滑,瑞士数据中6个变量的每个组合的置信区间。

但是,我收到以下错误:

  

display_param_error()中的错误:' params'是一个弃用的参数。   请包装'提供参数的功能。帮助(" wrap",package =   " GGally&#34)

我查看了wrap()wrap()个帮助文件,并尝试了wrap_fn_with_param_arg()ggpairs(swiss, lower = list(continuous = wrap("smooth"))) 函数的大量排列。

我可以按预期工作:

ggpairs(swiss, lower = list(continuous = wrap("smooth"), method = wrap("loess")))

但是一旦我添加了黄土部分,它就不会:

my_service:
    class: path/to/TestClass
    arguments: [@argument1, @argument2]

当我尝试上面一行时,我收到此错误。

  

值[3L]出错:以下ggpair绘图功能   随时可用:连续:c('点','平滑','密度',   ' cor','空白')组合:c(' box',' dot',' facethist',& #39; facetdensity&#39 ;,   ' denstrip'空白')离散:c('比率',' facetbar','空白')na :   c(' na','空白')

     

diag continuous:c(' densityDiag',' barDiag',' blankDiag')diag   离散的:c(' barDiag',' blankDiag')diag na:c(' naDiag',' blankDiag')

     

您也可以提供遵循api的自己的功能   功能(数据,映射,...){。 。 。并返回一个ggplot2图   对象Ex:my_fn< - function(data,mapping,...){p< -   ggplot(data = data,mapping = mapping)+         geom_point(...)p} ggpairs(data,lower = list(continuous = my_fn))

     

提供的功能:黄土

显然我在错误的地方进入黄土。任何人都可以帮我理解如何添加黄土部分吗?

请注意,我的问题与this one不同,因为我要求如何在ggpairs中实现黄土,因为params参数已被弃用。

非常感谢。

3 个答案:

答案 0 :(得分:23)

一种快捷方式是编写自己的函数...下面的函数是根据问题中ggpairs错误消息提供的函数编辑的

library(GGally)
library(ggplot2)    
data(swiss)

# Function to return points and geom_smooth
# allow for the method to be changed
my_fn <- function(data, mapping, method="loess", ...){
      p <- ggplot(data = data, mapping = mapping) + 
      geom_point() + 
      geom_smooth(method=method, ...)
      p
    }

# Default loess curve    
ggpairs(swiss[1:4], lower = list(continuous = my_fn))

enter image description here

# Use wrap to add further arguments; change method to lm
ggpairs(swiss[1:4], lower = list(continuous = wrap(my_fn, method="lm")))

enter image description here

这可能会更多地控制传递给每个geon_

的参数
  my_fn <- function(data, mapping, pts=list(), smt=list(), ...){
              ggplot(data = data, mapping = mapping, ...) + 
                         do.call(geom_point, pts) +
                         do.call(geom_smooth, smt) 
                 }

# Plot 
ggpairs(swiss[1:4], 
        lower = list(continuous = 
                       wrap(my_fn,
                            pts=list(size=2, colour="red"), 
                            smt=list(method="lm", se=F, size=5, colour="blue"))))

答案 1 :(得分:9)

也许您正在使用Coursera在线课程回归模型,并尝试将课程提供的Rmarkdown文件转换为html文件,并像我一样遇到此错误。

我尝试的方式是:

require(datasets); data(swiss); require(GGally); require(ggplot2)
g = ggpairs(swiss, lower = list(continuous = wrap("smooth", method = "lm")))
g

您也可以尝试使用method="loess",但结果与讲座中的结果略有不同。 method = "lm"可能比我看到的更合适。

答案 2 :(得分:1)

我怀疑你是在参加Coursera的课程。 虽然,我找不到任何包含ggplot的例子的github回购。

以下是我的工作:

RaiseEvent