- 0
- 0
- 0
- 0
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")
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")
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")
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")
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")
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")
- https://r-project.org
- https://www.python.org/
- https://www.stata.com/
¿Te hemos ayudado?
Ayudanos ahora tú, dejanos un comentario de agradecimiento, nos ayuda a motivarnos y si te es viable puedes hacer una donación:La ayuda no cuesta nada
Por otro lado te rogamos que compartas nuestro sitio con tus amigos, compañeros de clase y colegas, la educación de calidad y gratuita debe ser difundida, recuerdalo: