varias lineas hacer graficos grafico graficas ggplot dispersion como r

lineas - varias graficas en r



Trazar la matriz de correlación en un gráfico (11)

Como no puedo comentar, tengo que dar mi 2c a la respuesta por daroczig como un guion ...

La gráfica de dispersión elipse es del paquete elipse y se genera con:

corr.mtcars <- cor(mtcars) ord <- order(corr.mtcars[1,]) xc <- corr.mtcars[ord, ord] colors <- c("#A50F15","#DE2D26","#FB6A4A","#FCAE91","#FEE5D9","white", "#EFF3FF","#BDD7E7","#6BAED6","#3182BD","#08519C") plotcorr(xc, col=colors[5*xc + 6])

(desde la página man)

El paquete de corrplot también puede, como se sugiere, ser útil con imágenes bonitas encontradas aquí

Tengo una matriz con algunos valores de correlación. Ahora quiero trazar eso en un gráfico que se parece más o menos a eso:

¿Cómo puedo lograr eso?



He estado trabajando en algo similar a la visualización publicada por @daroczig, con un código publicado por @Ulrik usando la función plotcorr() del paquete ellipse . Me gusta el uso de elipses para representar correlaciones y el uso de colores para representar la correlación negativa y positiva. Sin embargo, quería que los llamativos colores se destacaran por correlaciones cercanas a 1 y -1, no para aquellos cercanos a 0.

Creé una alternativa en la que las elipsis blancas se superponen en círculos de colores. Cada elipse blanca tiene un tamaño tal que la proporción del círculo de color visible detrás de ella es igual a la correlación al cuadrado. Cuando la correlación es cercana a 1 y -1, la elipse blanca es pequeña y gran parte del círculo de color es visible. Cuando la correlación es cercana a 0, la elipse blanca es grande y poco del círculo de color es visible.

La función, plotcor() , está disponible en https://github.com/JVAdams/jvamisc/blob/master/R/plotcor.r .

A continuación, se muestra un ejemplo de la gráfica resultante utilizando el conjunto de datos mtcars .

library(plotrix) library(seriation) library(MASS) plotcor(cor(mtcars), mar=c(0.1, 4, 4, 0.1))


La biblioteca ggplot2 puede manejar esto con geom_tile() . Parece que se pudo haber realizado algún cambio de escala en ese gráfico anterior, ya que no hay ninguna correlación negativa, así que tenlo en cuenta con tus datos. Usando el conjunto de datos mtcars :

library(ggplot2) library(reshape) z <- cor(mtcars) z.m <- melt(z) ggplot(z.m, aes(X1, X2, fill = value)) + geom_tile() + scale_fill_gradient(low = "blue", high = "yellow")

EDITAR :

ggplot(z.m, aes(X1, X2, fill = value)) + geom_tile() + scale_fill_gradient2(low = "blue", high = "yellow")

permite especificar el color del punto medio y el valor predeterminado es el blanco, por lo que puede ser un buen ajuste aquí. Se pueden encontrar otras opciones en el sitio web ggplot here y here .



Me doy cuenta de que ha pasado un tiempo, pero los nuevos lectores pueden estar interesados ​​en rplot() del paquete corrr ( https://cran.rstudio.com/web/packages/corrr/index.html ), que puede producir los tipos de parcelas @daroczig menciona, pero diseña para un enfoque de canalización de datos:

install.packages("corrr") library(corrr) mtcars %>% correlate() %>% rplot()

mtcars %>% correlate() %>% rearrange() %>% rplot()

mtcars %>% correlate() %>% rearrange() %>% rplot(shape = 15)

mtcars %>% correlate() %>% rearrange() %>% shave() %>% rplot(shape = 15)

mtcars %>% correlate() %>% rearrange(absolute = FALSE) %>% rplot(shape = 15)


Muy fácil con Lattice :: levelplot:

z <- cor(mtcars) require(lattice) levelplot(z)


Otra solución que aprendí recientemente es un mapa de calor interactivo creado con el paquete qtlcharts .

install.packages("qtlcharts") library(qtlcharts) iplotCorr(mat=mtcars, group=mtcars$cyl, reorder=TRUE)

A continuación se muestra una imagen estática de la trama resultante.

Puedes ver la versión interactiva en mi blog . Desplácese sobre el mapa de calor para ver los valores de fila, columna y celda. Haga clic en una celda para ver un diagrama de dispersión con símbolos coloreados por grupo (en este ejemplo, el número de cilindros, 4 es rojo, 6 es verde y 8 es azul). Al pasar el cursor sobre los puntos en el diagrama de dispersión se obtiene el nombre de la fila (en este caso, la marca del automóvil).



Rápido, sucio y en el estadio:

library(lattice) #Build the horizontal and vertical axis information hor <- c("214", "215", "216", "224", "211", "212", "213", "223", "226", "225") ver <- paste("DM1-", hor, sep="") #Build the fake correlation matrix nrowcol <- length(ver) cor <- matrix(runif(nrowcol*nrowcol, min=0.4), nrow=nrowcol, ncol=nrowcol, dimnames = list(hor, ver)) for (i in 1:nrowcol) cor[i,i] = 1 #Build the plot rgb.palette <- colorRampPalette(c("blue", "yellow"), space = "rgb") levelplot(cor, main="stage 12-14 array correlation matrix", xlab="", ylab="", col.regions=rgb.palette(120), cuts=100, at=seq(0,1,0.01))


Usa el paquete corrplot:

library(corrplot) data(mtcars) M <- cor(mtcars) ## different color series col1 <- colorRampPalette(c("#7F0000","red","#FF7F00","yellow","white", "cyan", "#007FFF", "blue","#00007F")) col2 <- colorRampPalette(c("#67001F", "#B2182B", "#D6604D", "#F4A582", "#FDDBC7", "#FFFFFF", "#D1E5F0", "#92C5DE", "#4393C3", "#2166AC", "#053061")) col3 <- colorRampPalette(c("red", "white", "blue")) col4 <- colorRampPalette(c("#7F0000","red","#FF7F00","yellow","#7FFF7F", "cyan", "#007FFF", "blue","#00007F")) wb <- c("white","black") par(ask = TRUE) ## different color scale and methods to display corr-matrix corrplot(M, method="number", col="black", addcolorlabel="no") corrplot(M, method="number") corrplot(M) corrplot(M, order ="AOE") corrplot(M, order ="AOE", addCoef.col="grey") corrplot(M, order="AOE", col=col1(20), cl.length=21,addCoef.col="grey") corrplot(M, order="AOE", col=col1(10),addCoef.col="grey") corrplot(M, order="AOE", col=col2(200)) corrplot(M, order="AOE", col=col2(200),addCoef.col="grey") corrplot(M, order="AOE", col=col2(20), cl.length=21,addCoef.col="grey") corrplot(M, order="AOE", col=col2(10),addCoef.col="grey") corrplot(M, order="AOE", col=col3(100)) corrplot(M, order="AOE", col=col3(10)) corrplot(M, method="color", col=col1(20), cl.length=21,order = "AOE", addCoef.col="grey") if(TRUE){ corrplot(M, method="square", col=col2(200),order = "AOE") corrplot(M, method="ellipse", col=col1(200),order = "AOE") corrplot(M, method="shade", col=col3(20),order = "AOE") corrplot(M, method="pie", order = "AOE") ## col=wb corrplot(M, col = wb, order="AOE", outline=TRUE, addcolorlabel="no") ## like Chinese wiqi, suit for either on screen or white-black print. corrplot(M, col = wb, bg="gold2", order="AOE", addcolorlabel="no") }

Por ejemplo:

Más bien elegante IMO