Как использовать метод loess в GGally::ggpairs с помощью функции wrap
Я пытаюсь повторить этот простой пример, приведенный в курсе "Модели регрессии Coursera R":
require(datasets)
data(swiss)
require(GGally)
require(ggplot2)
ggpairs(swiss, lower = list(continuous = "smooth", params = c(method = "loess")))
Я ожидаю увидеть график 6х6 пар - одну диаграмму рассеяния с более гладкими лессами и доверительными интервалами для каждой комбинации из 6 переменных в швейцарских данных.
Однако я получаю следующую ошибку:
Ошибка в display_param_error(): "params" является устаревшим аргументом. Пожалуйста, "оберните" функцию для предоставления аргументов. помощь ("wrap", package = "GGally")
Я посмотрел через ggpairs()
а также wrap()
файлы справки и перепробовал много перестановок wrap()
а также wrap_fn_with_param_arg()
функции.
Я могу заставить это работать как ожидалось:
ggpairs(swiss, lower = list(continuous = wrap("smooth")))
Но как только я добавляю часть лесса, это не так:
ggpairs(swiss, lower = list(continuous = wrap("smooth"), method = wrap("loess")))
Я получаю эту ошибку, когда я попробовал строку выше.
Ошибка в значении [3L]: Следующие функции графика ggpair легко доступны: непрерывный: c('точки', 'сглаживание', 'плотность', 'cor', 'blank') комбинированный: c('коробка', 'точка ', 'facethist', 'facetdensity', 'denstrip', 'blank') дискретный: c(' ratio ',' facetbar ',' blank ') na: c(' na ',' blank ')
diag непрерывный: c('densityDiag', 'barDiag', 'blankDiag') diag дискретный: c('barDiag', 'blankDiag') diag na: c('naDiag', 'blankDiag')
Вы также можете предоставить свою собственную функцию, которая соответствует API функции (data, mapping, ...){ .,, } и возвращает объект графика ggplot2 Пример: my_fn<- function (data, mapping,...) {p <- ggplot (data = data, mapping = mapping) + geom_point (...) p} ggpairs (data, lower = список (непрерывный = my_fn))
Предоставленная функция: лесс
Очевидно, я вхожу в Лесс не в том месте. Может кто-нибудь помочь мне понять, как добавить часть лесса в?
Обратите внимание, что моя проблема отличается от этой, поскольку я спрашиваю, как реализовать loess в ggpairs, поскольку аргумент params стал устаревшим.
Спасибо большое.
4 ответа
Одним из быстрых способов является написание вашей собственной функции... приведенная ниже была отредактирована с предоставленной ggpairs
сообщение об ошибке в вашем вопросе
library(GGally)
library(ggplot2)
data(swiss)
# Function to return points and geom_smooth
# allow for the method to be changed
my_fn <- function(data, mapping, method="loess", ...){
p <- ggplot(data = data, mapping = mapping) +
geom_point() +
geom_smooth(method=method, ...)
p
}
# Default loess curve
ggpairs(swiss[1:4], lower = list(continuous = my_fn))
# Use wrap to add further arguments; change method to lm
ggpairs(swiss[1:4], lower = list(continuous = wrap(my_fn, method="lm")))
Это, возможно, дает немного больше контроля над аргументами, которые передаются каждому geon_
my_fn <- function(data, mapping, pts=list(), smt=list(), ...){
ggplot(data = data, mapping = mapping, ...) +
do.call(geom_point, pts) +
do.call(geom_smooth, smt)
}
# Plot
ggpairs(swiss[1:4],
lower = list(continuous =
wrap(my_fn,
pts=list(size=2, colour="red"),
smt=list(method="lm", se=F, size=5, colour="blue"))))
Возможно, вы посещаете модели регрессии онлайн-курса Coursera и пытаетесь преобразовать файл Rmarkdown, заданный курсом, в файл html, и столкнулись с этой ошибкой, как и я.
Способ, которым я опробовал это:
require(datasets); data(swiss); require(GGally); require(ggplot2)
g = ggpairs(swiss, lower = list(continuous = wrap("smooth", method = "lm")))
g
Также вы можете попробовать использовать method="loess"
, но результат выглядит несколько иначе, чем в лекции. method = "lm"
может быть лучше подходит, как я вижу.
Я так же подозревал, что вы посещаете курс Курсеры. Хотя я не смог найти ни одного репозитория github, содержащего примеры ggplot.
Вот что я сделал, чтобы это работало:
gp = ggpairs(swiss, lower = list(continuous = "smooth"))
gp
Это работает: ggpairs(swiss, lower = list(continuous = wrap("smooth", method = "loess")))