Как нарисовать оценку лесса в GGally с помощью ggpairs?
Я попробовал пакет GGally немного. Особенно функция ggpairs. Тем не менее, я не могу понять, как использовать лесс вместо lm при построении графика. Есть идеи? Вот мой код:
require(GGally)
diamonds.samp <- diamonds[sample(1:dim(diamonds)[1],200),]
ggpairs(diamonds.samp[,c(1,5)],
lower = list(continuous = "smooth"),
params = c(method = "loess"),
axisLabels = "show")
Спасибо!
PS сравните с функцией plotmatrix, ggpairs намного медленнее... В результате большую часть времени я просто использую plotmatrix из ggplot2.
1 ответ
Часто лучше написать свою собственную функцию для использования. Адаптировано из этого ответа на аналогичный вопрос.
library(GGally)
diamonds_sample = diamonds[sample(1:dim(diamonds)[1],200),]
# Function to return points and geom_smooth
# allow for the method to be changed
custom_function = function(data, mapping, method = "loess", ...){
p = ggplot(data = data, mapping = mapping) +
geom_point() +
geom_smooth(method=method, ...)
p
}
# test it
ggpairs(diamonds_sample,
lower = list(continuous = custom_function)
)
Производит это:
ht tps:https://stackru.com/images/e17ba2c07942636cbf4a4e7375999c54baa8b4da.png
Ну, документация не говорит, так что используйте источник, Люк
Вы можете углубиться в источник с помощью:
ls('package:GGally')
GGally::ggpairs
... and browse every function it references ...
seems like the args get mapped into ggpairsPlots and then -> plotMatrix which then gets called
Таким образом, выбор сглаживания явно не поддерживается, вы можете выбрать только
continuous = "smooth"
, Если он ведет себя какggplot2:geom_smooth
он автоматически определяет, какой из поддерживаемых сглаживателей вызывать (лесс для <1000 точек данных, gam для>=1000). Вы можете пройти через отладчик, чтобы увидеть, что происходит внутри вашего графика. Я пытался проследить за источником, но мои глаза остекленели.
или 2. Просмотрите на https://github.com/ggobi/ggally/blob/master/R/ggpairs.r [14.04.2013]
#' upper and lower are lists that may contain the variables 'continuous',
#' 'combo' and 'discrete'. Each element of the list is a string implementing
#' the following options: continuous = exactly one of ('points', 'smooth',
#' 'density', 'cor', 'blank') , ...
#'
#' diag is a list that may only contain the variables 'continuous' and 'discrete'.
#' Each element of the diag list is a string implmenting the following options:
#' continuous = exactly one of ('density', 'bar', 'blank');