为什么ggpairs函数中的散点图上没有黄土层?

问题描述 投票:1回答:1

我有一个简短的问题,无法弄清楚问题是什么。我想绘制一个数据集,并在这里找到一个解决方案: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"))
                )

enter image description here

如您所见,这里是我的输出,没有将平滑层放在散点图上。我想将其用于我的实际数据集的回归分析。任何方向或解释都是好的。谢谢!

r loess ggpairs
1个回答
0
投票

@ 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)。

© www.soinside.com 2019 - 2024. All rights reserved.