Cómo crear un mapa de calor en R usando ggplot2

Este tutorial explica cómo crear un mapa de calor en R usando ggplot2.

Ejemplo: crear un mapa de calor en R

Para crear un mapa de calor, usaremos el conjunto de datos R integrado mtcars .

#ver las primeras seis filas de mtcars
 head (mtcars)

# mpg cyl disp hp drat wt qsec vs am gear carb
# Mazda RX4 21,0 6160110 3,90 2,620 16,46 0 1 4 4
# Mazda RX4 Wag 21.0 6160110 3.90 2.875 17.02 0 1 4 4
# Datsun 710 22,8 4108 93 3,85 2,320 18,61 1 1 4 1
#Hornet 4 Impulso 21,4 6 258110 3,08 3,215 19,44 1 0 3 1
#Hornet Sportabout 18,7 8360175 3,15 3,440 17,02 0 0 3 2
#Valiente 18,1 6225105 2,76 3,460 20,22 1 0 3 1

Actualmente, mtcars está en un formato ancho, pero necesitamos fundirlo en un formato largo para crear el mapa de calor.

#cargar el paquete reshape2 para usar la función melt ()
biblioteca (reshape2)

# fundir mtcars en formato largo
melt_mtcars <- derretir (mtcars)

#add columna para el nombre del coche
melt_mtcars $ car <- rep (fila.nombres (mtcars), 11)

#ver las primeras seis filas de melt_mtcars
cabeza (melt_mtcars)

# coche de valor variable
# 1 mpg 21.0 Mazda RX4
# 2 mpg 21.0 Mazda RX4 Wag
# 3 mpg 22.8 Datsun 710
# 4 mpg 21.4 Hornet 4 Drive
# 5 mpg 18.7 Hornet Sportabout
# 6 mpg 18.1 Valiente

Podemos usar el siguiente código para crear el mapa de calor en ggplot2:

biblioteca (ggplot2)

ggplot (melt_mtcars, aes (variable, coche)) +
  geom_tile (aes (relleno = valor), color = "blanco") +
  scale_fill_gradient (bajo = "blanco", alto = "rojo")

mapa de calor en ggplot2

Desafortunadamente, dado que los valores de disp son mucho mayores que los valores de todas las demás variables en el marco de datos, es difícil ver la variación de color de las otras variables.

Una manera de resolver este problema es cambiar la escala de los valores para cada variable de 0 a 1 usando el rescale () función en las escalas () del paquete y el ddply () función en el plyr () paquete:

#cargar bibliotecas
biblioteca (plyr)
biblioteca (escalas)

# valores de escala para todas las variables en el marco de datos fundido
melt_mtcars <- ddply (melt_mtcars,. (variable), transform, rescale = rescale (valor))

#create mapa de calor usando valores reescalados
ggplot (melt_mtcars, aes (variable, coche)) +
  geom_tile (aes (llenar = cambiar la escala), color = "blanco") +
  scale_fill_gradient (bajo = "blanco", alto = "rojo")

Mapa de calor con valores reescalados en R

También podemos cambiar los colores del mapa de calor cambiando los colores usados ​​en el argumento scale_fill_gradient ():

#cree un mapa de calor usando la escala de color azul
 ggplot (melt_mtcars, aes (variable, car)) +
  geom_tile (aes (llenar = cambiar la escala), color = "blanco") +
  scale_fill_gradient (bajo = "blanco", alto = "azul acero")

Mapa de calor en R usando ggplot2 y escala de color azul

Tenga en cuenta que el mapa de calor está actualmente ordenado por nombre de automóvil. En su lugar, podríamos ordenar el mapa de calor de acuerdo con los valores de una de las variables como mpg usando el siguiente código:

#define el nombre del auto como una nueva columna, luego ordene por mpg descendente
 mtcars $ car <- row.names (mtcars)
mtcars $ coche <- con (mtcars, reordenar (coche, mpg))

# fundir mtcars en formato largo
 melt_mtcars <- melt (mtcars)

#rescale valores para todas las variables en el marco de datos fundido
 melt_mtcars <- ddply (melt_mtcars,. (variable), transform, rescale = rescale (valor))

#crear mapa de calor usando valores reescalados
 ggplot (melt_mtcars, aes (variable, car)) +
  geom_tile (aes (llenar = cambiar la escala), color = "blanco") +
  scale_fill_gradient (bajo = "blanco", alto = "azul acero")

Mapa de calor en ggplot2 usando valores ordenados

Para ordenar el mapa de calor por mpg en forma ascendente, simplemente necesitamos usar -mpg en el argumento reorder ():

#define el nombre del auto como una nueva columna, luego ordene por mpg descendente
 mtcars $ car <- row.names (mtcars)
mtcars $ car <- con (mtcars, reorder (car, -mpg ))

# fundir mtcars en formato largo
 melt_mtcars <- melt (mtcars)

#rescale valores para todas las variables en el marco de datos fundido
 melt_mtcars <- ddply (melt_mtcars,. (variable), transform, rescale = rescale (valor))

#crear mapa de calor usando valores reescalados
 ggplot (melt_mtcars, aes (variable, car)) +
  geom_tile (aes (llenar = cambiar la escala), color = "blanco") +
  scale_fill_gradient (bajo = "blanco", alto = "azul acero")

Mapa de calor en R usando ggplot2

Por último, podemos eliminar las etiquetas del eje xy del eje y junto con la leyenda si no nos gusta cómo se ve usando los argumentos labs () y theme ():

# crear mapa de calor sin etiquetas de eje o leyenda
 ggplot (melt_mtcars, aes (variable, car)) +
  geom_tile (aes (llenar = cambiar la escala), color = "blanco") +
  scale_fill_gradient (bajo = "blanco", alto = "azul acero") +
  laboratorios (x = "", y = "") +
  tema (leyenda.posición = "ninguno")

mapa de calor ggplot2 sin etiquetas de eje o leyenda

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Deja un comentario

Cuando la relación entre un conjunto de variables predictoras y una variable de respuesta es muy compleja, a menudo usamos…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!