Un mapa de calor es un gráfico que usa color para indicar dependencias de datos. Hay muchos paquetes R que pueden dibujar mapas de calor. En el pasado, introdujimos el "paquete pheatmap de lenguaje R dibuja mapas de calor". Hoy presentaremos el paquete linkET de lenguaje R para dibujar mapas de calor de red combinados de correlación. El mapa de calor de correlación significa la correlación entre el mapa de calor y otros datos, y compara la relación interna entre múltiples datos.
El paquete linkET fue escrito por uno de nuestros compatriotas, actualmente necesita descargarse usando devtools::install_github, la descripción del autor del paquete es que todo se puede conectar entre sí, lo cual es bastante interesante. Primero descarguemos el paquete,
devtools::install_github("Hy4m/linkET", force = TRUE) ¿
Algunas veces Rstudio le pedirá que actualice otros paquetes? Elija 3 aquí, simplemente no lo actualice.
Después de descargar el paquete, importamos el paquete y los datos. Debido a que es un mapa de calor de correlación, necesitamos importar dos datos
library(linkET)
library(ggplot2)
library(dplyr)
varespec<-read.csv("E:/r/test/varespec.csv",sep=',',header=TRUE)
varechem<-read.csv("E:/r/test/varechem.csv",sep=',',header=TRUE)
Estos dos datos provienen de la literatura Väre, H., Ohtonen, R. y Oksanen, J. (1995) Effects of reindeer grazing on understorey vegetation in dry Pinus sylvestris forest.Journal of Vegetation Science 6, 523–530 The varespec data frame tiene
24 Las filas son 44 columnas, y las columnas son los valores de cobertura estimados para las 44 especies. El nombre de la variable se compone de nombres científicos. La introducción de datos dice que las personas que están familiarizadas con los tipos de vegetación pueden saberlo de un vistazo. No sé qué tipo de planta es, pero es el nombre de la planta de todos modos. . El marco de datos varechem tiene 24 filas y 14 columnas, lo que proporciona las propiedades del suelo para las mismas ubicaciones que en el marco de datos varespec. Las medidas químicas tienen nombres obvios que son característicos de algunos elementos metálicos. Baresoil representa la cobertura estimada de suelo desnudo y Hum depth representa el espesor de la capa de humus.
El paquete linkET puede dibujar un mapa de calor único o un mapa de calor de correlación, que mostraremos a continuación.
Tiene varias funciones especiales para introducir primero, la función de correlación puede calcular la correlación de datos
correlate(varechem)
También es posible calcular el coeficiente de correlación de diferentes datos
correlate(varespec[1:30], varechem)
Después de calcular la correlación, se puede generar el gráfico. Primero, los datos individuales
correlate(varechem) %>%
as_md_tbl() %>%
qcorrplot() +
geom_square()
Otro dato doble
correlate(varespec[1:30], varechem) %>%
qcorrplot() +
geom_square()
Haz cambios de color personalizados
correlate(varespec[1:30], varechem) %>%
qcorrplot() +
geom_square() +
scale_fill_gradientn(colours = RColorBrewer::brewer.pal(11, "RdBu"))
La función Qcorrplot puede visualizar la matriz coeficiada
qcorrplot(correlate(varechem)) +
geom_square() +
scale_fill_gradientn(colours = RColorBrewer::brewer.pal(11, "RdBu"))
El coeficiente Tipo puede controlarnos para tomar gráficos parciales, por ejemplo, solo quiero tomar la mitad inferior
qcorrplot(correlate(varechem), type = "lower") +
geom_square() +
scale_fill_gradientn(colours = RColorBrewer::brewer.pal(11, "RdBu"))
También puede personalizar su propio estilo usando la función set_corrplot_style() y la función geom_square() Por ejemplo, quiero cambiar el cuadro a un círculo y definir los colores como rojo, azul y blanco.
set_corrplot_style(colours = c("red", "white", "blue"))
qcorrplot(correlate(varechem), type = "lower") +
geom_shaping(marker = "circle")
Si desea volver al color personalizado del sistema, puede utilizar
set_default_style()
A continuación, dibujemos el mapa de calor de la red de la correlación. Antes de dibujar, debemos realizar una prueba de Mantel. El autor del paquete R dijo esto, la prueba de Mantel y Mantel parcial de la matriz de disimilitud. , tenga en cuenta aquí que spec_select selecciona el valor de índice de la columna, y los datos de varespec son exactamente 44 columnas
mantel <- mantel_test(varespec, varechem,
spec_select = list(Spec01 = 1:7,
Spec02 = 8:18,
Spec03 = 19:37,
Spec04 = 38:44))
Después de obtener el valor R y el valor P de cada categoría, los representamos en segmentos
mantel<-mantel %>%
mutate(rd = cut(r, breaks = c(-Inf, 0.2, 0.4, Inf),
labels = c("< 0.2", "0.2 - 0.4", ">= 0.4")),
pd = cut(p, breaks = c(-Inf, 0.01, 0.05, Inf),
labels = c("< 0.01", "0.01 - 0.05", ">= 0.05")))
Después del cálculo, puede dibujar más
qcorrplot(correlate(varechem), type = "lower", diag = FALSE) +
geom_square() +
geom_couple(aes(colour = pd, size = rd),
data = mantel,
curvature = nice_curvature())
Se puede modificar aún más. Esta línea de conexión es demasiado gruesa y no muy hermosa. Vamos a ajustarla.
qcorrplot(correlate(varechem), type = "lower", diag = FALSE) +
geom_square() +
geom_couple(aes(colour = pd, size = rd),
data = mantel,
curvature = nice_curvature()) +
scale_fill_gradientn(colours = RColorBrewer::brewer.pal(11, "RdBu")) +
scale_size_manual(values = c(0.5, 1, 2))
color de línea personalizado
qcorrplot(correlate(varechem), type = "lower", diag = FALSE) +
geom_square() +
geom_couple(aes(colour = pd, size = rd),
data = mantel,
curvature = nice_curvature()) +
scale_fill_gradientn(colours = RColorBrewer::brewer.pal(11, "RdBu")) +
scale_size_manual(values = c(0.5, 1, 2)) +
scale_colour_manual(values = color_pal(3))
Cambiar el nombre de la leyenda
qcorrplot(correlate(varechem), type = "lower", diag = FALSE) +
geom_square() +
geom_couple(aes(colour = pd, size = rd),
data = mantel,
curvature = nice_curvature()) +
scale_fill_gradientn(colours = RColorBrewer::brewer.pal(11, "RdBu")) +
scale_size_manual(values = c(0.5, 1, 2)) +
scale_colour_manual(values = color_pal(3)) +
guides(size = guide_legend(title = "Mantel's r",
override.aes = list(colour = "grey35"),
order = 2),
colour = guide_legend(title = "Mantel's p",
override.aes = list(size = 3),
order = 1),
fill = guide_colorbar(title = "Pearson's r", order = 3))
Todavía hay muchos detalles que se pueden modificar, por lo que no los presentaré uno por uno.La cuenta oficial respondió: Datos del mapa de calor de la red, puede obtener los datos.