Gráfico de mapa de calor de 2 variables
Muestra un ejemplo en R de un mapa de calor, para ellos se utiliza la librería ggplot2.
# Cargar librerias
library(reshape2)
library(ggplot2)
# Generar la matriz
# Definir nombres de filas y columnas
nombre_genes <- paste(rep("Gen", 10), LETTERS[1:10], sep="_") # Nombres de Filas
nombre_pacientes <- paste(rep("Paciente", 5), seq(1,5,1), sep="_") # Nombres de Columnas
# Generar valores aleatorios de la matriz
valores <- data.frame(genes = nombre_genes, # Poner nombre a las columnas
matrix(rnorm(50, 2, 1.8),
nrow = length(nombre_genes),
ncol = length(nombre_pacientes))
)
# Poner nombre a las filas
names(valores)[2:(length(nombre_pacientes)+1)] <- nombre_pacientes
# Reorganizar el dataframe para ponerlo en formato entendible por el mapa de calor
datos <- melt(valores, id.vars = "genes")
names(datos)[2:3] <- c("paciente", "nivel")
head(datos)
# Pintar el gráfico
ggplot(datos, aes(paciente, genes )) +
geom_tile(aes(fill = nivel), color = "white") +
scale_fill_gradient(low = "white", high = "steelblue") +
ylab("genes ") +
xlab("pacientes") +
theme(legend.title = element_text(size = 10),
legend.text = element_text(size = 12),
plot.title = element_text(size=16),
axis.title=element_text(size=14,face="bold"),
axis.text.x = element_text(angle = 90, hjust = 1)) +
labs(fill = "Nivel")
Hola! Soy nuevo en R y necesito hacer un mapa de calor de unos valores de una matriz:
> geo
[,1] [,2] [,3] [,4] [,5]
[1,] 0.0000 264.9976 300.09596 113.1631 279.85306
[2,] 264.9976 0.0000 125.22228 175.8369 130.11184
[3,] 300.0960 125.2223 0.00000 187.6386 24.83882
[4,] 113.1631 175.8369 187.63859 0.0000 166.83119
[5,] 279.8531 130.1118 24.83882 166.8312 0.00000
me podrías ayudar? Muchas gracias
Revísate el ejemplo y cambia los valores por que tengo por los que tú necesitas.
Hola Diego buenas tardes!!! Tengo una inquietud, tengo un mapa de calor de dos variables y quiero cambiar los colores pero no que cambie el orden de datos. Que me sugieres?
Buenas Elizabeth, te sugiero que cambies el color en «scale_fill_gradient(low = «white», high = «red»)». Al cambiarlo por esta línea te los pintaría en rojo.
Gracias por tus tan valiosos aportes
Thanks Diego. It is clear, neat and tidy. It is a perfect example.
Gracias Diego por tu valiosa aportación. Yo quiero hacer un mapa de calor de dos variable X,Y pero el llenado (fill) son dos variables, digamos A y B, ¿se puede hacer?