Crear mapa de calor en R usando ggplot2

Un mapa de calor representa la relación entre dos atributos de un marco de datos como un mosaico codificado por colores. Un mapa de calor produce una cuadrícula con múltiples atributos del marco de datos, que representa la relación entre los dos atributos tomados a la vez.

Conjunto de datos utilizado: bestsellers

Primero creemos una array de correlación para entender la relación entre diferentes atributos, para esto se usa la función cor().

Sintaxis: cor(marco de datos)

Nota: esta función falla cuando el marco de datos consta de valores además de valores numéricos, por lo que también usaremos el método sapply().

Ejemplo:

R

df <- read.csv("bestsellers.csv")
 
cor(df[sapply(df, is.numeric)])

Producción:

Ahora que tenemos una array de correlación, tenemos que fundirla de manera que se pueda crear un mapa de calor. Para esto se usa la función melt() de la biblioteca reshape2.

La fusión en la programación R se realiza para organizar los datos. Se realiza utilizando la función melt() que toma valores de conjuntos de datos y columnas que deben mantenerse constantes. Usando melt() , el marco de datos se convierte en un formato largo y estira el marco de datos.

Sintaxis: melt(data, na.rm = FALSE, value.name = “value”)

Parámetros:

  • datos: representa el conjunto de datos que tiene que ser reformado
  • na.rm: si es VERDADERO, elimina los valores NA del conjunto de datos
  • value.name: representa el nombre de la variable utilizada para almacenar valores

Ejemplo:

R

library(ggplot2)
library(reshape2)
 
df <- read.csv("bestsellers.csv")
 
data <- cor(df[sapply(df,is.numeric)])
 
data1 <- melt(data)
 
head(data1)

 Producción:

Para crear un mapa de calor con los datos fundidos así producidos, usamos la función geom_tile() de la biblioteca ggplot2. Se utiliza esencialmente para crear mapas de calor.

Sintaxis: geom_tile(x,y,fill)

Parámetro:

  • x: posición en el eje x
  • y: posición en el eje y
  • relleno: valores numéricos que se traducirán a colores

A esta función, Var1 y Var2 del marco de datos fusionado se pasan a xey respectivamente. Estos representan la relación entre los atributos tomados dos a la vez. Proporcionar parámetros de relleno, ya que se utilizarán para codificar por colores los mosaicos en función de algún valor numérico.

Ejemplo:

R

library(ggplot2)
library(reshape2)
 
df <- read.csv("bestsellers.csv")
 
data <- cor(df[sapply(df,is.numeric)])
 
data1 <- melt(data)
 
ggplot(data1, aes(x = Var1,
                  y = Var2,
                  fill = value))+geom_tile()

 Producción:
 

Cambio de color:

El color de la trama se puede cambiar usando tres funciones:

  • scale_fill_gradient(): agrega colores extremos a la trama.

Sintaxis:

scale_fill_gradient(alto, bajo)

Parámetro:

  • bajo: color para resaltar valores más pequeños
  • alto: color para resaltar valores más grandes

R

library(ggplot2)
library(reshape2)
 
df<-read.csv("bestsellers.csv")
 
data<-cor(df[sapply(df,is.numeric)])
 
data1<-melt(data)
 
ggplot(data1,aes(x = Var1, y = Var2, fill = value))+
geom_tile()+scale_fill_gradient(high = "green", low = "white")

 Producción:

  • scale_fill_distiller(): solía personalizarse según la paleta ColorBrewer.

Sintaxis: scale_fill_distiller(paleta)

R

library(ggplot2)
library(reshape2)
 
df<-read.csv("bestsellers.csv")
 
data<-cor(df[sapply(df, is.numeric)])
 
data1<-melt(data)
 
ggplot(data1,aes(x = Var1, y = Var2,fill = value))+
geom_tile() + scale_fill_distiller(palette = "Spectral")

 Producción:

  • scale_fill_viridis(): para usar viridis. En esta función, discreto se establece en FALSO.

Sintaxis: scale_fill_viridis(discreto)

R

library(ggplot2)
library(reshape2)
library(viridis)
 
df<-read.csv("bestsellers.csv")
 
data<-cor(df[sapply(df,is.numeric)])
 
data1<-melt(data)
 
ggplot(data1, aes(x = Var1, y = Var2, fill = value))+
geom_tile() + scale_fill_viridis(discrete = FALSE)

Producción:

Ordenar la fila:

Un mapa de calor se puede reordenar reordenando sus elementos y. Esto se puede hacer mediante reorder().

Sintaxis: reorder(y_value,value)

Donde, Valor es el elemento por el que se va a reordenar.

R

library(ggplot2)
library(reshape2)
 
df<-read.csv("bestsellers.csv")
 
data<-cor(df[sapply(df,is.numeric)])
 
data1<-melt(data)
 
ggplot(data1,aes(x = Var1, y = reorder(Var2, value),
                 fill = value)) + geom_tile()

Producción:

Agregar título:

El título se puede agregar a un mapa de calor para que sea descriptivo. Se puede hacer usando ggtitle().

Sintaxis: ggtitle(“título”)

R

library(ggplot2)
library(reshape2)
 
df<-read.csv("bestsellers.csv")
 
data<-cor(df[sapply(df,is.numeric)])
 
data1<-melt(data)
 
ggplot(data1, aes(x = Var1, y = Var2, fill = value))+
geom_tile()+ggtitle("Bestsellers")

Producción:

Eliminación de etiquetas:

Las etiquetas del mapa de calor también se pueden eliminar para mostrar solo los valores correspondientes que representa. Si eliminamos las etiquetas, mantener las marcas no tiene sentido. Podemos usar los atributos de la función theme() axis.ticks y axis.text y establecerlos en element_blank(). 

Sintaxis: tema(axis.ticks = element_blank(), axis.text = element_blank())

R

library(ggplot2)
library(reshape2)
 
df<-read.csv("bestsellers.csv")
 
data<-cor(df[sapply(df,is.numeric)])
 
data1<-melt(data)
 
ggplot(data1,aes(x=Var1,y=Var2,fill=value))+geom_tile()+
  theme(axis.ticks = element_blank(),
        axis.text = element_blank())

Producción:

Publicación traducida automáticamente

Artículo escrito por vanshikagoyal43 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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