Est-il possible de tracer une matrice de nuages de points avec ggplot2
, en utilisant ggplot
'Nice, comme la cartographie de facteurs supplémentaires pour la couleur, la forme, etc.
Je pense à quelque chose de similaire à la fonction base
. pairs
.
Vous voudrez peut-être essayer plotmatrix:
library(ggplot2)
data(mtcars)
plotmatrix(mtcars[,1:3])
me mpg (première colonne de mtcars) ne devrait pas être un facteur. Je ne l'ai pas vérifié, mais il n'y a aucune raison pour que ce soit le cas. Cependant, je reçois un nuage de points :)
Remarque: Pour référence ultérieure, la fonction plotmatrix()
a été remplacée par la fonction ggpairs()
de la fonction GGally
paquet comme @ naught101 suggère dans une autre réponse ci-dessous à cette question.
Je continue à vouloir faire cela, mais l'intrigue est une merde. Hadley recommande en utilisant plutôt le paquet GGally . Il a une fonction, ggpairs qui est un tracé de paires grandement amélioré (vous permet d'utiliser des variables non continues dans vos trames de données). Il trace différentes parcelles dans chaque carré, en fonction des types de variables:
library(GGally)
ggpairs(iris, aes(colour = Species, alpha = 0.4))
Si on veut obtenir un objet ggplot
(et non ggmatrix
comme dans le cas de ggpairs()
), la solution consiste à faire fondre les données deux fois, puis ggplot
avec facettage. facet_wrap
Serait préférable à facet_grid
Pour limiter la surface tracée, étant donné que le paramètre scales = 'free'
Est fourni.
require(ggplot2)
require(dplyr)
require(tidyr)
gatherpairs <- function(data, ...,
xkey = '.xkey', xvalue = '.xvalue',
ykey = '.ykey', yvalue = '.yvalue',
na.rm = FALSE, convert = FALSE, factor_key = FALSE) {
vars <- quos(...)
xkey <- enquo(xkey)
xvalue <- enquo(xvalue)
ykey <- enquo(ykey)
yvalue <- enquo(yvalue)
data %>% {
cbind(gather(., key = !!xkey, value = !!xvalue, !!!vars,
na.rm = na.rm, convert = convert, factor_key = factor_key),
select(., !!!vars))
} %>% gather(., key = !!ykey, value = !!yvalue, !!!vars,
na.rm = na.rm, convert = convert, factor_key = factor_key)
}
iris %>%
gatherpairs(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) %>% {
ggplot(., aes(x = .xvalue, y = .yvalue, color = Species)) +
geom_point() +
geom_smooth(method = 'lm') +
facet_wrap(.xkey ~ .ykey, ncol = length(unique(.$.ykey)), scales = 'free', labeller = label_both) +
scale_color_brewer(type = 'qual')
}