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"))
                )

在此处输入图像描述

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

4

1 回答 1

1

@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文档中:

upper 和 lower 是可能包含变量 'continuous'、'combo'、'discrete' 和 'na' 的列表。列表的每个元素可以是一个函数或一个字符串。如果提供了字符串,则它必须实现以下选项之一:

连续恰好是('points','smooth','smooth_loess','density','cor','blank')之一。此选项用于连续 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 时使用此选项。

我的代码片段起作用的原因是因为我已经传递了一个listto lower,其中一个名为“连续”的元素是my_fn(它生成了一个ggplot)。

于 2020-03-03T01:51:52.910 回答