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

我正在尝试复制Coursera R回归模型课程中给出的这个简单示例:

require(datasets)
data(swiss)
require(GGally)
require(ggplot2)
ggpairs(swiss, lower = list(continuous = "smooth", params = c(method = "loess")))

我期望看到一个6x6对的图 - 一个散点图对于瑞士数据中的6个变量的每个组合都具有更平滑和可信的间隔。

但是,我收到以下错误:

display_param_error()中的错误:'params'是一个不推荐的参数。 请'包装'该函数来提供参数。 帮助(“wrap”,package =“GGally”)

我浏览了ggpairs()wrap()帮助文件,并尝试了很多wrap()wrap_fn_with_param_arg()函数的排列。

我可以得到这个按预期工作:

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

但是一旦我加入黄土部分,它不会:

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

当我尝试上面的行时,出现此错误。

错误值[3L]:以下ggpair绘图函数可用:连续:c('points','smooth','density','cor','blank')combo:c('box','dot '''facethist','facetdensity','denstrip','blank')discrete:c('ratio','facetbar','blank')na:c('na','blank')

diag continuous:c('densityDiag','barDiag','blankDiag')diag discrete: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))

提供的功能:黄土

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

请注意,我的问题与此不同,因为我正在询问如何在ggpairs中实施黄土,因为params论据已被废弃。

非常感谢。


一种快捷的方法是编写自己的函数......下面的函数是从你的问题中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))

在这里输入图像描述

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

在这里输入图像描述


这可能会更多地控制传递给每个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"))))

也许你正在使用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"可能更适合我所见。


我怀疑你正在参加Coursera的课程。 虽然,我找不到包含ggplot示例的任何github repo。

以下是我所做的工作:

gp = ggpairs(swiss, lower = list(continuous = "smooth"))
gp
链接地址: http://www.djcxy.com/p/5225.html

上一篇: How to use loess method in GGally::ggpairs using wrap function

下一篇: Is there a way to turn a ggpairs() plot into a ggplot2 object?