Los gráficos de correlaciones no me gustan especialmente pero empiezo a verlos en algunas presentaciones. En R tenemos algunos ejemplos interesantes pero con códigos que, bajo mi prisma, son complejos. Por este motivo me he puesto manos a la obra para realizar este gráfico de correlaciones con un código lo más sencillo posible. Para ello vamos a emplear ggplot2:
library(ggplot2)
datos = cor(mtcars)
datos.lista = melt(datos)
names(datos.lista)=c("Variable_1","Variable_2","Correlacion")
escala = seq(-1,1,0.1)
Vamos a emplear el famoso conjunto de datos mtcars para ilustrar el ejemplo. Con él creamos la matriz de correlaciones pero esta matriz la hemos de transformar en una lista, para ello empleamos la función melt del paquete reshape, en este punto hemos pasado de una matriz de correlaciones a una lista con pares de variables y su correspondiente coeficiente de correlación. A esta lista le asignamos los nombres que deseamos con la función names y por último generamos un vector que denominamos escala que nos permitirá establecer los colores que deseamos utilizar cuando pintemos nuestra matriz de correlaciones.
El código de ggplot2 que utilizamos para pintarla es muy sencillo:
Editado tras el comentario de Felix
(p <- ggplot(datos.lista, aes(Variable_1, Variable_2, fill=Correlacion)) +
geom_tile(aes(fill=Correlacion)) +
scale_fill_continuous(low = "white", high = "steelblue" ,breaks=escala) +
labs(title = "Correlación de variables") +
theme(plot.title = element_text(face = "bold", size = 14)))
La clave es geom_tile que nos permite pintar mapas que estarán compuestos de cuadrados y representarán el coeficiente de correlación entre las variables. Con scale_fill_continous especificamos el rango de colores y el número de grupos que utilizamos, como vemos es el objeto escala el que nos indica el número de grupos. Por último añadimos un título y tenemos un gráfico de correlaciones tan bonito como el que tenemos arriba.
Hola:
A mi me gusta mucho éste: http://gallery.r-enthusiasts.com/graph/Correlation_matrix_ellipses_149
Hola Juanjo, ese gráfico está muy bien y el código es muy sencillo. Este que presento es una réplica de uno que nos ofrece un software muy caro y muy propietario.
Hola. Me parece genial el gráfico, e imagino que será porque estoy empezando con R, y no tengo mucha idea todavía, pero el código no me funciona. He copiado y pegado, tal cual, y me aparece el error «objeto ‘p’ no encontrado». Estoy intentándolo hacer en R Studio. ¿Podrías decirme qué estoy haciendo mal? Muchas gracias!
Corregido. Muchas gracias Jose Ignacio.
Mirad que maravilla:
http://www.datavis.ca/papers/corrgram.pdf
Que pasada de gráficos.
Hola, he intentado hacer tu gráfico de correlaciones y es espectacular. Sin embargo, al ser novato con este programa, no sé cómo cambiar el tamaño del gráfico ni de las leyendas de los ejes. Al utilizar tu programa, se me mezclan las leyendas y no se entiende. ¿Me podrías indicar cómo solucionar estos problemas: cambiar o especificar el tamaño del gráfico y modificar las leyendas de los ejes?
Muchas gracias y enhorabuena, un código espectacular
Victoriano
Feliz Navidad
Cómo puedo hacer este análisis para datos multivariantes???
Hola! cómo puedo hacer un análisis de ese tipo con variables tipo factor?
El geom_bar me funciona con este código?
Hola, desde el último comentario algo han cambiado las cosas, mando el mismo ejemplo para hacer el gráfico con dos pequeñas modificaciones:
(p <- ggplot(datos.lista, aes(Variable_1, Variable_2, fill=Correlacion)) +
geom_tile(aes(fill=Correlacion)) +
scale_fill_continuous(low = "white", high = "steelblue" ,breaks=escala) +
labs(title = "Correlación de variables") +
theme(plot.title = element_text(face = "bold", size = 14)))