Tracer la masortingce de corrélation dans un graphique

J’ai une masortingce avec des valeurs de corrélation. Maintenant, je veux tracer cela dans un graphique qui ressemble plus ou moins à cela:

entrer la description de l'image ici

Comment puis-je y arriver?

Rapide, sale et dans le stade:

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)) 

entrer la description de l'image ici

Plutôt “moins” ressemble à, mais ça vaut la peine de vérifier (en donnant plus d’informations visuelles):

Ellipses de masortingce de corrélation : Ellipses de matrice de corrélation Cercles de masortingce de corrélation : Cercles de matrice de corrélation

Veuillez trouver plus d’exemples dans la vignette corrplot référencée par @assylias ci-dessous.

Très facile avec treillis :: levelplot:

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

entrer la description de l'image ici

La bibliothèque ggplot2 peut gérer cela avec geom_tile() . Il semble qu’il y ait eu un redimensionnement dans ce graphique ci-dessus, car il n’y a pas de corrélation négative, prenez donc cela en considération avec vos données. En utilisant le mtcars données mtcars :

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

entrer la description de l'image ici

EDIT :

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

entrer la description de l'image ici

permet de spécifier la couleur du point milieu et par défaut blanc, il peut donc être un bon ajustement ici. Vous trouverez d'autres options sur le site Web de ggplot ici et ici .

Utilisez le package 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") } 

Par exemple:

entrer la description de l'image ici

Plutôt élégant IMO

Ce type de graphique est appelé “carte de chaleur”, entre autres termes. Une fois que vous avez votre masortingce de corrélation, tracez-la en utilisant l’un des différents tutoriels disponibles.

Utilisation de graphiques de base: http://flowingdata.com/2010/01/21/how-to-make-a-heatmap-a-quick-and-easy-solution/

Utiliser ggplot2: http://learnr.wordpress.com/2010/01/26/ggplot2-quick-heatmap-plotting/

J’ai travaillé sur quelque chose de similaire à la visualisation publiée par @daroczig, avec le code posté par @Ulrik en utilisant la fonction plotcorr() du paquet ellipse . J’aime l’utilisation d’ellipses pour représenter les corrélations et l’utilisation de couleurs pour représenter une corrélation négative et positive. Cependant, je voulais que les couleurs accrocheuses se distinguent par des corrélations proches de 1 et -1, pas pour celles proches de 0.

J’ai créé une alternative dans laquelle les ellipses blanches sont superposées sur les cercles colorés. Chaque ellipse blanche est dimensionnée pour que la proportion du cercle coloré visible derrière elle soit égale à la corrélation au carré. Lorsque la corrélation est proche de 1 et -1, l’ellipse blanche est petite et une grande partie du cercle coloré est visible. Lorsque la corrélation est proche de 0, l’ellipse blanche est grande et peu de cercle coloré est visible.

La fonction plotcor() est disponible à l’ adresse https://github.com/JVAdams/jvamisc/blob/master/R/plotcor.r .

Un exemple du tracé résultant utilisant le mtcars données mtcars est présenté ci-dessous.

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

résultat de l'appel à la fonction plotcor ()

Je me rends compte que cela fait un moment, mais de nouveaux lecteurs pourraient être intéressés par rplot() du paquet corrr ( https://cran.rstudio.com/web/packages/corrr/index.html ), qui peut produire le genre de mentions @daroczig, mais conception pour une approche de pipeline de données:

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

entrer la description de l'image ici

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

entrer la description de l'image ici

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

entrer la description de l'image ici

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

entrer la description de l'image ici

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

entrer la description de l'image ici

La fonction corrplot () du package corrplot R peut également être utilisée pour tracer un corrélogramme.

 library(corrplot) M<-cor(mtcars) # compute correlation matrix corrplot(M, method="circle") 

Plusieurs articles décrivant comment calculer et visualiser la masortingce de corrélation sont publiés ici:

Une autre solution que j’ai récemment apprise est une carte thermique interactive créée avec le package qtlcharts .

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

Vous trouverez ci-dessous une image statique du tracé résultant. entrer la description de l'image ici

Vous pouvez voir la version interactive sur mon blog . Survolez la carte thermique pour afficher les valeurs des lignes, des colonnes et des cellules. Cliquez sur une cellule pour voir un nuage de points avec des symboles colorés par groupe (dans cet exemple, le nombre de cylindres, 4 est rouge, 6 est vert et 8 est bleu). En survolant les points du nuage de points, vous obtenez le nom de la rangée (dans ce cas, la marque de la voiture).

Comme je ne peux pas commenter, je dois donner mon 2c à la réponse de daroczig comme une réponse …

Le nuage de points d’ellipse provient en effet du paquet d’ellipse et est généré avec:

 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]) 

(depuis la page de manuel)

Le paquet corrplot peut aussi - comme suggéré - être utile avec de jolies images trouvées ici