今天偶然從一篇paper裡看到了一張R繪製的相關性圖,跟以往看到的有些不一樣。這張圖裡面不僅展示了相關係數,並且相關係數顯示的大小跟相關係數是成比例的。這樣做的好處是,讓那些最顯著相關的一目了然,而那些不怎麼相關的就不那麼顯眼。這個引起了小編的興趣,想自己也畫一張這樣的相關性圖。
說幹就幹,就拿mtcars這套數據來練練手。先來個簡單的,由簡入繁
library(corrplot)M <- cor(mtcars)corrplot(M, method = "circle", number.cex = 1, addCoef.col="black")接下來嘗試一下根據相關係數的大小來調節顯示的字體大小
corrplot(M, method = "circle", number.cex = abs(M), addCoef.col="black" )沒想到這麼容易就實現了,太沒有挑戰了。
不過文章中的相關性圖是三角形的,接下來我們也來畫一個三角形的圖,勝利在望。
#設置type = "upper"就可以畫出上三角#設置成lower就可以畫下三角corrplot(M, method = "circle", type = "upper", number.cex = abs(M), addCoef.col="black")高興太早,翻車了!只畫一半的時候,不能用完整的相關係數矩陣M來作為字體的大小,這樣設置不對。
推測如果圖像只畫一半,相關係數應該也只用一半。那麼這個相關係數的順序如何確定呢?下面來做個測試
size=rep(0.1,66)size[1]=1size[2]=0.5size[3]=1corrplot(M, method = "circle", type = "upper", number.cex = size, addCoef.col="black")被我發現了,是按列來排布的!如箭頭所示的方向和順序
接下來就是最終章了
size=c()for(i in 1:ncol(M)){ size=c(size,M[1:i,i])}size=as.numeric(size)
corrplot(M, method = "circle", type = "upper", number.cex = abs(size), addCoef.col="black")大功告成了!!!