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:


(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) + opts(title="Análisis de correlaciones", plot.title = theme_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.

8 pensiamientos en “Gráfico de correlaciones entre variables

  • Juanjo

    Hola:

    A mi me gusta mucho éste: http://gallery.r-enthusiasts.com/graph/Correlation_matrix_ellipses_149

    Responder
  • rvaquerizo

    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.

    Responder
  • Jose Ignacio

    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!

    Responder
  • rvaquerizo

    Corregido. Muchas gracias Jose Ignacio.

    Responder
  • rvaquerizo

    Mirad que maravilla:

    http://www.datavis.ca/papers/corrgram.pdf

    Que pasada de gráficos.

    Responder
  • Victoriano Martín

    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

    Responder
  • karo

    Cómo puedo hacer este análisis para datos multivariantes???

    Responder
  • Liliana

    Hola! cómo puedo hacer un análisis de ese tipo con variables tipo factor?
    El geom_bar me funciona con este código?

    Responder

Deja un comentario

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