tutorial - superponer graficas en r ggplot
Crea una matriz de diagramas de dispersiĆ³n(pares() equivalentes) en ggplot2 (3)
Es posible que desee probar plotmatrix:
library(ggplot2)
data(mtcars)
plotmatrix(mtcars[,1:3])
para mí mpg (primera columna en mtcars) no debería ser un factor. No lo he comprobado, pero no hay ninguna razón por la que debería ser uno. Sin embargo, recibo un diagrama de dispersión :)
Nota: Para futuras referencias, la función plotmatrix()
ha sido reemplazada por la función ggpairs()
del paquete GGally
, ya que @ naught101 sugiere en otra respuesta a continuación esta pregunta.
¿Es posible trazar una matriz de gráficos de dispersión con ggplot2
, usando las características agradables de ggplot
como mapear factores adicionales para el color, la forma, etc. y agregar más suave?
Estoy pensando en algo similar a los pairs
funciones base
.
Si uno quiere obtener un objeto ggplot
(no ggmatrix
como en el caso de ggpairs()
), la solución es fundir los datos dos veces, luego ggplot
con facetas. facet_wrap
sería mejor que facet_grid
para limitar el área graficada, dado que las scales = ''free''
se proporciona el parámetro scales = ''free''
.
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'')
}
Sigo queriendo hacer esto, pero plotmatrix es una mierda. Hadley recommends usar el paquete GGally en su lugar. Tiene una función, ggpairs que es una parcela de pares muy mejorada (le permite usar variables no continuas en sus marcos de datos). Traza diferentes parcelas en cada cuadrado, dependiendo de los tipos de variables:
library(GGally)
ggpairs(iris, aes(colour = Species, alpha = 0.4))