Решение в посте из комментария @ Эдварда работает здесь с 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
со специально названными элементами, которые определяют, что делать с указанными c типами переменных. Элементы в списке могут быть функциями или символьными векторами (но не ggplot
объектами). Из документации ggpairs
:
верхний и нижний списки, которые могут содержать переменные «непрерывный», «комбинированный», «дискретный» и «na». Каждый элемент списка может быть функцией или строкой. Если указана строка, она должна реализовывать одну из следующих опций:
непрерывный ровно один из ('points', 'smooth', 'smooth_loess', 'density', 'cor', 'blank') , Эта опция используется для непрерывных данных X и Y.
комбинирует ровно одно из ('box', 'box_no_facet', 'dot', 'dot_no_facet', 'facethist', 'facetdensity', 'denstrip', 'пустой'). Эта опция используется либо для непрерывных данных X и категориальных данных Y, либо для категорийных данных X и непрерывных данных Y.
дискретный ровно один из ('facetbar', 'ratio', 'blank'). Эта опция используется для категориальных данных X и Y.
na точно один из ('na', 'blank'). Эта опция используется, когда все данные X равны NA, все данные Y равны NA или все данные X или Y равны NA.
Причина, по которой мой фрагмент работает, заключается в том, что я передал list
до lower
, с элементом с именем «непрерывный», который является my_fn
(который генерирует ggplot
).