2013-04-08 114 views
6

我試圖從相關矩陣中繪製出一個繪圖,並使用三種顏色來表示使用庫晶格的相關係數。熱圖或相關矩陣圖

library(lattice) 

levelplot(cor) 

我得到如下情節:

Plot of correlation matrix

情節是隻對我的數據的一個子集。當我使用整個數據集(400X400)時,它變得不清楚,着色沒有正確顯示,並顯示爲點。是否有可能獲得相同的瓦片形式的大矩陣?

我嘗試過使用pheatmap函數,但我不希望我的值被聚集在一起,只需要在瓦片表單中清晰地顯示高值和低值。

+0

您是否嘗試增加png分辨率?比方說,每個變量4個像素= 4×400變成1600×1600像素。 – Marek 2013-04-08 20:16:54

+0

Iam對不起,我不知道如何做到這一點,並沒有嘗試過 – user2258452 2013-04-08 20:23:38

+0

您可以將圖片寫入png,例如:'png(「cor.png」,1600,1600); print(levelplot(cor)); dev。關閉()'。 – Marek 2013-04-08 21:17:38

回答

0

@Lucas在這裏提供了很好的建議,因爲corrplot對於可視化相關矩陣非常有用。然而,它沒有解決繪製大相關矩陣的原始問題。實際上,當試圖將這個大的相關矩陣可視化時,corplot也會失敗。對於簡單的解決方案,您可能需要考慮減少變量的數量。也就是說,我會建議查看一些你知道對你的問題很重要的變量之間的關係。試圖理解許多變量的相關結構將是一項艱鉅的任務(即使你可以想象它)!

+0

請問有多少變數是'大'? – smci 2018-01-19 22:59:13

12

如果你想做一個相關的情節,使用corrplot庫,因爲它有很多的靈活性,以創建相關

library(corrplot) 
#create data with some correlation structure 
jnk=runif(1000) 
jnk=(jnk*100)+c(1:500, 500:1) 
jnk=matrix(jnk,nrow=100,ncol=10) 
jnk=as.data.frame(jnk) 
names(jnk)=c("var1", "var2","var3","var4","var5","var6","var7","var8","var9","var10") 

#create correlation matrix 
cor_jnk=cor(jnk, use="complete.obs") 
#plot cor matrix 
corrplot(cor_jnk, order="AOE", method="circle", tl.pos="lt", type="upper",   
tl.col="black", tl.cex=0.6, tl.srt=45, 
     addCoef.col="black", addCoefasPercent = TRUE, 
     p.mat = 1-abs(cor_jnk), sig.level=0.50, insig = "blank") 

enter image description here 上面的代碼只是增加了色彩的相關性熱圖般的人物有> abs(0.5)相關性,但您可以輕鬆更改該值。最後,還有很多方法可以配置圖的外觀(更改顏色漸變,顯示相關性,顯示完整vs僅半矩陣等)。順序參數特別有用,因爲它允許您基於PCA對相關矩陣中的變量進行排序,因此它們基於相關性中的相似性排序。

對於例如廣場(類似於原來的情節) - 只是改變了方法,以正方形: enter image description here

編輯:@Carson。您仍然可以將此方法用於合理的大型相關矩陣:例如下面的100個可變矩陣。除此之外,我沒有看到有什麼用於在沒有一些子集的情況下用這麼多變量來表示相關矩陣的圖形表示,因爲這很難解釋。 enter image description here