我正在尝试复制 Coursera R 回归模型类(class)中给出的这个简单示例:
require(datasets)
data(swiss)
require(GGally)
require(ggplot2)
ggpairs(swiss, lower = list(continuous = "smooth", params = c(method = "loess")))
我希望看到一个 6x6 对图 - 一个散点图,对于瑞士数据中 6 个变量的每种组合,黄土更平滑,置信区间。
但是,我收到以下错误:
Error in display_param_error() : 'params' is a deprecated argument. Please 'wrap' the function to supply arguments. help("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")))
当我尝试上面的行时出现此错误。
Error in value[3L] : The following ggpair plot functions are readily available: continuous: 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')
You may also provide your own function that follows the api of function(data, mapping, ...){ . . . } and returns a ggplot2 plot object Ex: my_fn <- function(data, mapping, ...){ p <- ggplot(data = data, mapping = mapping) + geom_point(...) p } ggpairs(data, lower = list(continuous = my_fn))
Function provided: loess
显然我在错误的地方进入了黄土。谁能帮我理解如何添加黄土部分?
请注意,我的问题与 this one 不同。 ,因为我在问如何在 ggpairs 中实现 loess,因为 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"))))
关于r - 如何使用 wrap 函数在 GGally::ggpairs 中使用黄土方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35085261/