Bazı korelasyon değerlerine sahip bir matrisim var. Şimdi bunu aşağı yukarı böyle görünen bir grafikte çizmek istiyorum:
Bunu nasıl başarabilirim?
Bazı korelasyon değerlerine sahip bir matrisim var. Şimdi bunu aşağı yukarı böyle görünen bir grafikte çizmek istiyorum:
Bunu nasıl başarabilirim?
Yanıtlar:
Hızlı, kirli ve sahada:
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))
Daha ziyade "daha az" görünür, ancak kontrol etmeye değer (daha fazla görsel bilgi olarak):
Korelasyon matrisi elipsleri :
Korelasyon matris daireleri :
Aşağıdaki @assylias tarafından atıfta bulunulan düzeltme vinyetinde lütfen daha fazla örnek bulun .
ellipse:plotcorr
.
Ggplot2 kütüphanesi bunun üstesinden gelebilir geom_tile()
. Görünüşe göre, yukarıdaki grafikte herhangi bir negatif korelasyon olmadığı için bazı yeniden ölçeklendirme yapılmış olabilir, bu yüzden verilerinizle bunu dikkate alın. mtcars
Veri kümesini kullanma :
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")
DÜZENLE :
ggplot(z.m, aes(X1, X2, fill = value)) + geom_tile() +
scale_fill_gradient2(low = "blue", high = "yellow")
orta noktanın rengini belirlemeye izin verir ve varsayılan olarak beyazdır, bu yüzden burada güzel bir ayarlama olabilir. Diğer seçenekler ggplot web sitesinde burada ve burada bulunabilir .
c(-1, -0.6, -0.3, 0, 0.3, 0.6, 1)
) ile "white"
izin ortada renkler verimli korelasyonun simetriyi yansıtır.
scale_fill_gradient2()
Otomatik olarak tanımladığınız işlevselliğe ulaşıyor gibi görünüyor . Bunun var olduğunu bilmiyordum.
p <- ggplot(.....) + ... + ....; library(plotly); ggplotly(p)
o interaktif hale getirecek
X1
z.m$X1 <- factor(z.m$X1, levels = rev(levels( z.m$X1 )))
Corrplot paketini kullanın:
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")
}
Örneğin:
Oldukça zarif IMO
Bu tür grafiğe diğer terimler arasında "ısı haritası" denir. Korelasyon matrisinizi aldıktan sonra, oradaki çeşitli öğreticilerden birini kullanarak onu çizin.
Temel grafikleri kullanma: http://flowingdata.com/2010/01/21/how-to-make-a-heatmap-a-quick-and-easy-solution/
Ggplot2'yi kullanma: http://learnr.wordpress.com/2010/01/26/ggplot2-quick-heatmap-plotting/
Paketin plotcorr()
işlevini kullanarak @ Ulrik tarafından gönderilen kodla, @daroczig tarafından yayınlanan görselleştirmeye benzer bir şey üzerinde çalışıyorum ellipse
. Korelasyonları temsil etmek için elips kullanılmasını ve negatif ve pozitif korelasyonu temsil etmek için renklerin kullanılmasını seviyorum. Bununla birlikte, göz alıcı renklerin 0'a yakın olanlar için değil, 1 ve -1'e yakın korelasyonlar için öne çıkmasını istedim.
Beyaz elipslerin renkli dairelerin üzerine yerleştirildiği bir alternatif yarattım. Her bir beyaz elips, arkasında görünen renkli dairenin oranının korelasyonun karesine eşit olacağı şekilde boyutlandırılmıştır. Korelasyon 1 ve -1'e yakın olduğunda, beyaz elips küçüktür ve renkli dairenin çoğu görülebilir. Korelasyon 0'a yakın olduğunda, beyaz elips büyüktür ve renkli dairenin çok azı görülebilir.
İşlev, https://github.com/JVAdams/jvamisc/blob/master/R/plotcor.r adresindeplotcor()
mevcuttur .
mtcars
Veri kümesini kullanarak elde edilen grafiğin bir örneği aşağıda gösterilmiştir.
library(plotrix)
library(seriation)
library(MASS)
plotcor(cor(mtcars), mar=c(0.1, 4, 4, 0.1))
Bunun bir süre oldu fark, ancak yeni okuyucular ilgilenen olabilir rplot()
dan corrr
paketi ( https://cran.rstudio.com/web/packages/corrr/index.html bahseder @daroczig parsellerin türlü üretebilir), , ancak bir veri hattı yaklaşımı için tasarım:
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)
Corrplot () gelen işlevi corrplot R paketin da korelogram çizmek için kullanılabilmektedir.
library(corrplot)
M<-cor(mtcars) # compute correlation matrix
corrplot(M, method="circle")
korelasyon matrisinin nasıl hesaplanacağını ve görselleştirileceğini açıklayan birkaç makale burada yayınlanmıştır:
Yakın zamanda öğrendiğim bir başka çözüm de qtlcharts paketiyle oluşturulan etkileşimli bir ısı haritası .
install.packages("qtlcharts")
library(qtlcharts)
iplotCorr(mat=mtcars, group=mtcars$cyl, reorder=TRUE)
Aşağıda ortaya çıkan grafiğin statik bir görüntüsü verilmiştir.
Etkileşimli versiyonu blogumda görebilirsiniz . Satır, sütun ve hücre değerlerini görmek için ısı haritasının üzerine gelin. Gruba göre renklendirilmiş semboller içeren dağılım grafiğini görmek için bir hücreye tıklayın (bu örnekte, silindir sayısı, 4 kırmızı, 6 yeşil ve 8 mavi). Dağılım grafiğindeki noktaların üzerine gelmek satırın adını verir (bu durumda arabanın markası).
Yorum yapamayacağım için 2c'yi daroczig'in cevabına cevaplayıcı olarak vermem gerekiyor ...
Elips dağılım grafiği aslında elips paketindendir ve şunlarla oluşturulur:
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])
(man sayfasından)
Corrplot paketi - önerildiği gibi - burada bulunan güzel resimlerle de faydalı olabilir