我有一个简短的问题,无法弄清楚问题是什么。我想绘制一个数据集,并在这里找到一个解决方案:How to use loess method in GGally::ggpairs using wrap function
但是,我似乎无法弄清楚我的方法出了什么问题。这是下面带有简单mtcars数据集的代码块:
library(ggplot2)
library(GGally)
View(mtcars)
GGally::ggpairs(mtcars,
lower= list(
ggplot(mapping = aes(rownames(mtcars))) +
geom_point()+
geom_smooth(method = "loess"))
)
如您所见,这里是我的输出,没有将平滑层放在散点图上。我想将其用于我的实际数据集的回归分析。任何方向或解释都是好的。谢谢!
@ Edward评论中的帖子中的解决方案在此处与mtcars
一起使用。下面的代码段复制了上面的图,并添加了一条黄土线:
library(ggplot2)
library(GGally)
View(mtcars)
# make a function to plot generic data with points and a loess line
my_fn <- function(data, mapping, method="loess", ...){
p <- ggplot(data = data, mapping = mapping) +
geom_point() +
geom_smooth(method=method, ...)
p
}
# call ggpairs, using mtcars as data, and plotting continuous variables using my_fn
ggpairs(mtcars, lower = list(continuous = my_fn))
在您的代码段中,第二个参数lower
传递了一个ggplot
对象,但是它所需要的是带有特定命名元素的list
,该元素指定如何处理特定的变量类型。列表中的元素可以是函数或字符向量(但不能是ggplot
对象)。从ggpairs
文档中:
上部和下部是可能包含变量'continuous'的列表,'combo','discrete'和'na'。列表中的每个元素都可以是函数或字符串。如果提供了字符串,则必须实现一个以下选项之一:
连续正好是('points','smooth','smooth_loess','密度','心','空白')。此选项用于连续的X和Y数据。
完全是('box','box_no_facet','dot','dot_no_facet','facethist','facetdensity','denstrip','blank')。使用此选项对于连续X和类别Y数据或类别X和连续的Y数据。
精确地离散('facetbar','ratio','blank')之一。这个选项是用于分类X和Y数据。
na恰好是('na','blank')之一。当所有X数据都使用此选项时为NA,所有Y数据均为NA,或者所有X或Y数据均为NA。
我的代码段起作用的原因是因为我已将list
传递给lower
,并且具有一个名为'continuous'的元素,该元素为my_fn
(生成一个ggplot
)。