Почему на графиках рассеяния в функции ggpairs нет слоя лёсса?

У меня быстрый вопрос, и я не могу понять, в чем проблема. Я хотел построить набор данных, который у меня есть, и нашел здесь одно решение: как использовать метод лёсса в GGally::ggpairs с помощью функции переноса

Однако я не могу понять, что было не так с моим подходом. Вот фрагмент кода ниже с простым набором данных mtcars:

library(ggplot2)
library(GGally)


View(mtcars)

GGally::ggpairs(mtcars,
                 lower= list(
                   ggplot(mapping = aes(rownames(mtcars))) + 
                     geom_point()+
                     geom_smooth(method = "loess"))
                )

Как вы можете видеть, это мой результат, который не помещает гладкий слой на диаграмму рассеяния. Я хотел использовать его для регрессионного анализа моего фактического набора данных. Любое указание или объяснение было бы хорошо. Спасибо!

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 документация:

верхний и нижний - это списки, которые могут содержать переменные "непрерывный", "комбинированный", "дискретный" и "на". Каждый элемент списка может быть функцией или строкой. Если предоставляется строка, она должна реализовывать один из следующих вариантов:

непрерывный ровно один из ('points', 'smooth', 'smooth_loess', 'density', 'cor', 'blank'). Эта опция используется для непрерывных данных X и Y.

combo - ровно одно из ('box', 'box_no_facet', 'dot', 'dot_no_facet', 'facethist', 'facetde density', 'denstrip', 'blank'). Эта опция используется либо для непрерывных данных X и категориальных данных Y, либо для категориальных данных X и непрерывных данных Y.

дискретный ровно один из ('facetbar', 'ratio', 'blank'). Эта опция используется для категориальных данных X и Y.

na ровно одно из ('na', 'blank'). Эта опция используется, когда все данные X - NA, все данные Y - NA или все данные X или Y - NA.

Причина, по которой мой фрагмент работает, заключается в том, что я прошел list к lower, с элементом с именем "непрерывный", который my_fn (который генерирует ggplot).

Другие вопросы по тегам