如何使用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?