Gráfico de correlaciones entre variables

20 Feb

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.

9 respuestas a «Gráfico de correlaciones entre variables»

  1. 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!

  2. 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

  3. 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)))

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *