您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“R語言相關(guān)關(guān)系可視化函數(shù)有哪些”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
一、pairs {graphics}
1. 參考
(1)《現(xiàn)代統(tǒng)計(jì)圖形》 5.17 散點(diǎn)圖矩陣
(2)《R數(shù)據(jù)可視化手冊(cè)》 5.13繪制散點(diǎn)圖矩陣
(3)pairs {graphics} 幫助文檔
2. 主要參數(shù)解釋
3. 圖形示例
3.1 基本圖形
pairs(iris[1:4], main = "Anderson's Iris Data -- 3 species", pch = 21, bg = c("red", "green3", "blue")[unclass(iris$Species)]) # 等同于 pairs(~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width, data=iris,main = "Anderson's Iris Data -- 3 species",pch = 21, bg = c("red", "green3", "blue")[unclass(iris$Species)])
上例選取iris鳶尾花數(shù)據(jù)集的前4列Sepal.Length 、Sepal.Width 、Petal.Length、Petal.Width作圖,同時(shí)設(shè)置bg使得不同顏色代表不同品種的鳶尾花??梢?,默認(rèn)生成的散點(diǎn)圖矩陣對(duì)角線為變量名稱,上三角和下三角面板的各個(gè)窗格均為其所在行與列兩個(gè)變量之間的散點(diǎn)圖,信息傳遞量相對(duì)較少且重復(fù),為此我們可以通過自定義函數(shù)進(jìn)一步修改和優(yōu)化。
3.2 自定義圖形
# 1. 自定義函數(shù)pannel.cor:顯示兩兩變量間的相關(guān)系數(shù),相關(guān)系數(shù)越大字號(hào)越大。 panel.cor <- function(x, y, digits = 2, prefix = "", cex.cor, ...) { usr <- par("usr"); on.exit(par(usr)) par(usr = c(0, 1, 0, 1)) r <- abs(cor(x, y)) txt <- format(c(r, 0.123456789), digits = digits)[1] txt <- paste0(prefix, txt) if(missing(cex.cor)) cex.cor <- 0.8/strwidth(txt) text(0.5, 0.5, txt, cex = cex.cor * r) } # 2. 自定義函數(shù)pannel.hist:展示各個(gè)變量的直方圖 panel.hist <- function(x, ...) { usr <- par("usr"); on.exit(par(usr)) par(usr = c(usr[1:2], 0, 1.5) ) h <- hist(x, plot = FALSE) breaks <- h$breaks; nB <- length(breaks) y <- h$counts; y <- y/max(y) rect(breaks[-nB], 0, breaks[-1], y, col = "cyan", ...) } # 3. 自定義函數(shù)panel.ls:繪制散點(diǎn)圖,并為其添加線性擬合直線 panel.lm<-function(x,y,col=par("col"),bg=NA,pch=par("pch"), cex=1,col.smooth="black",...){ points(x,y,pch=pch,col=col,bg=bg,cex=cex) abline(stats::lm(y~x),col=col.smooth,...) } # 4. 用相關(guān)系數(shù)(pannel.cor)替代默認(rèn)圖形上三角的散點(diǎn)圖,用直方圖(pannel.hist)替代默認(rèn)圖形對(duì)角線的變量名稱,用添加線性擬合線的散點(diǎn)圖(panel.ls)代替默認(rèn)圖形下三角的散點(diǎn)圖。 pairs(iris[1:4], main = "Anderson's Iris Data -- 3 species", pch = 21, bg = c("red", "green3", "blue")[unclass(iris$Species)], diag.panel=panel.hist, upper.panel=panel.cor, lower.panel=panel.lm)
自定義后的散點(diǎn)圖矩陣主對(duì)角線上用了直方圖,從中我們可以看到四個(gè)變量各自的分布情況;上三角面板顯示了各個(gè)變量之間的相關(guān)系數(shù),相關(guān)系數(shù)越大字號(hào)越大;下三角為散點(diǎn)圖,并用不同顏色的點(diǎn)標(biāo)記出鳶尾花的不同類型,同時(shí)利用函數(shù)panel.ls()添加了一條線性擬合線。此外,我們也可以將子面板函數(shù)設(shè)置為NULL,使得圖形僅顯示一半。
二、gpairs {gpairs}
1. 參考
(1)gpairs {gpairs} 幫助文檔
(2)統(tǒng)計(jì)之都:不同版本的散點(diǎn)圖矩陣
https://cosx.org/2009/03/scatterplot-matrix-visualization
2. 主要參數(shù)解釋
3. 圖形示例
library(gpairs) gpairs(iris, upper.pars = list(scatter = 'stats'), scatter.pars = list(pch = substr(as.character(iris$Species), 1, 1), col = as.numeric(iris$Species)), stat.pars = list(verbose = TRUE))
上圖中,4*4矩陣反映了iris前4列Sepal.Length 、Sepal.Width 、Petal.Length、Petal.Width變量?jī)蓛芍g的相關(guān)關(guān)系,其中,上三角顯示了相關(guān)關(guān)系的數(shù)量特征,如相關(guān)系數(shù)、p值等;下三角為散點(diǎn)圖,不同種類的鳶尾花用不同顏色、不同點(diǎn)型表示;最右側(cè)一列和最下方一行則分別對(duì)三種鳶尾花的花萼和花瓣長(zhǎng)寬進(jìn)行了簡(jiǎn)單的描述性統(tǒng)計(jì)分析。
三、corrgram {corrgram}
1. 參考
(1)《R語言實(shí)戰(zhàn)》11.3 相關(guān)圖
(2)Friendly M. Corrgrams: Exploratory Displays for Correlation Matrices[J]. American Statistician, 2002, 56(4):316-324.
(3)corrgram {corrgram} 幫助文檔
2. 主要參數(shù)解釋
3. 圖形示例
library(corrgram) vars2 <- c("Assists","Atbat","Errors","Hits","Homer","logSal", "Putouts","RBI","Runs","Walks","Years") corrgram(baseball[vars2], order=TRUE, main="Baseball data PC2/PC1 order", lower.panel=panel.shade, upper.panel=panel.pie)
上圖中,下三角面板用陰影的深度來表示相關(guān)性大小,其中藍(lán)色和從左下指向右上的斜杠表示單元格中的兩個(gè)變量呈正相關(guān),紅色和從左上指向右下的斜杠表示變量呈負(fù)相關(guān);色彩越深,飽和度越高,變量相關(guān)性越大。上三角面板用餅圖的填充比例來表示相關(guān)性大小,顏色的功能同上,但相關(guān)性大小由被填充的餅圖塊的大小來展示,正相關(guān)性將從12點(diǎn)鐘處開始順時(shí)針填充餅圖,負(fù)相關(guān)性則逆時(shí)針方向填充餅圖。
corrgram(auto, order=TRUE, main="Auto data (PC order)", lower.panel=corrgram::panel.ellipse, upper.panel=panel.bar, diag.panel=panel.minmax, col.regions=colorRampPalette(c("darkgoldenrod4", "burlywood1", "darkkhaki", "darkgreen")))
上圖中,下三角面板繪制置信橢圓和平滑擬合曲線,上三角面板繪制柱形圖;主對(duì)角面板指定顯示變量的最小值和***值;矩陣的行和列利用主成分分析法進(jìn)行了重排序。此外,也可設(shè)置 lower.panel或upper.panel為NULL使得圖形僅顯示一半。
四、corrplot {corrplot}
1. 主要參數(shù)解釋
2. 圖形示例
(1)相關(guān)矩陣可視化
僅相關(guān)系數(shù)
library(corrplot) data(mtcars) M <- cor(mtcars) corrplot(M, order = "AOE", type = "upper", tl.pos = "d") corrplot(M, add = TRUE, type = "lower", method = "number", order = "AOE", diag = FALSE, tl.pos = "n", cl.pos = "n")
上圖中,上三角面板以不同顏色和大小的圓形表示相關(guān)性大小,其中,藍(lán)色表示正相關(guān),紅色表示負(fù)相關(guān);顏色越深、圓形越大代表相關(guān)性越高;下三角面板在原有圖形的基礎(chǔ)上疊加而成(如果想僅顯示部分,可不再疊加),用相關(guān)系數(shù)的數(shù)值和顏色表示相關(guān)性方向和大小,并利用AOE(前兩個(gè)特征向量的角排序)對(duì)變量進(jìn)行重排序。
相關(guān)系數(shù)+P值
res1 <- cor.mtest(mtcars, conf.level = 0.95) corrplot(M, method="ellipse",p.mat = res1$p, sig.level = 0.2,order = "AOE", type = "upper", tl.pos = "d") corrplot(M, add = TRUE, p.mat = res1$p, sig.level = 0.2,type = "lower", method = "number", order = "AOE", diag = FALSE, tl.pos = "n", cl.pos = "n")
上圖中,上三角面板繪制橢圓形,下三角顯示相關(guān)系數(shù),并設(shè)置沒通過統(tǒng)計(jì)相關(guān)性檢驗(yàn)的結(jié)果打X。
(2)普通矩陣可視化
dat = matrix(c(1:10,10:1), nrow = 10) wb <- c("white", "black") corrplot(t(dat), method="pie", is.corr = F, cl.pos = "n", tl.pos = "n", cl.lim = c(1,10),col = wb, bg = "gold2")
五、ggpairs {GGally}
1. 參考
ggpairs {GGally}幫助文檔
2. 主要參數(shù)解釋
3. 圖形示例
(1)直接指定圖形類型
library(GGally) ggpairs(flea, columns = 2:4, ggplot2::aes(colour=species))
上圖基于函數(shù)默認(rèn)參數(shù)設(shè)置,并建立顏色和種類的映射,使得不同種類具有不同顏色,其中,上三角面板顯示相關(guān)系數(shù),包括總體相關(guān)以及不同種類的相關(guān);下三角繪制散點(diǎn)圖;主對(duì)角線用面積圖表示。
(2)自定義函數(shù)
library(ggplot2) diamonds.samp <- diamonds[sample(1:dim(diamonds)[1], 1000), ] ggpairs( diamonds.samp[, c(1:2,5,7)], mapping = aes(color = cut), lower = list(continuous = wrap("density", alpha = 0.5), combo = "dot_no_facet"), title = "Diamonds" )
上圖利用wrap將相關(guān)參數(shù)進(jìn)行封裝,使得下三角顯示密度圖,透明度為0.5。
六、coplot {graphics}
又名“條件分割圖”,與上述函數(shù)思想有所不同,該函數(shù)能夠?qū)崿F(xiàn)在給定某一個(gè)(或幾個(gè))變量z之后看觀察兩個(gè)變量之間的關(guān)系(以散點(diǎn)圖形式),條件分割圖中散點(diǎn)圖的順序是從左到右、從下到上,分別與條件變量從左到右、從下到上的指示條對(duì)應(yīng)。關(guān)于coplot的具體解釋和用法可參見幫助文檔及謝益輝《現(xiàn)代統(tǒng)計(jì)圖形》5.9 條件分割圖,下面是原書中的一個(gè)例子。
par(mar = rep(0, 4), mgp = c(2, 0.5, 0)) library(maps) coplot(lat ~ long | depth, data = quakes, number = 4, ylim = c(-45, -10.72), panel = function(x, y, ...) { map("world2", regions = c("New Zealand","Fiji"), add = TRUE, lwd = 0.1, fill = TRUE,col = "lightgray") text(180, -13, "Fiji", adj = 1) text(170, -35, "NZ") points(x, y, col = rgb(0.2, 0.2, 0.2, 0.5)) })
quakes {datasets} 數(shù)據(jù)集反映了1964年以來斐濟(jì)島附近發(fā)生的震級(jí)MB大于4.0的地震事件數(shù)據(jù),如果我們想知道該地區(qū)在地震深度分布上是否均勻,可以令深度變量為條件變量,繪制條件分割圖,觀察在不同條件下地震發(fā)生地點(diǎn)(經(jīng)緯度)是否有變化。圖示上方是用矩形條標(biāo)記出來的條件變量的取值范圍,下方是條件散點(diǎn)圖,從圖中可以清楚地看出,隨著深度值的增加,地震發(fā)生地點(diǎn)逐漸由西向東、由南向北移動(dòng),震源較深的地震都發(fā)生在離斐濟(jì)島很近的東南側(cè)。
七、其他函數(shù)
以上六個(gè)函數(shù)很大程度上可以滿足我們對(duì)相關(guān)關(guān)系可視化的需求,此外,R還提供了眾多相關(guān)函數(shù),下面選取了幾個(gè)函數(shù)幫助文檔中的實(shí)例進(jìn)行簡(jiǎn)單介紹以作了解。
1. splom {lattice}
基于lattice作圖系統(tǒng),也可以通過進(jìn)一步的設(shè)置達(dá)到更高的可視化要求。
library(lattice) super.sym <- trellis.par.get("superpose.symbol") splom(~iris[1:4], groups = Species, data = iris, panel = panel.superpose, key = list(title = "Three Varieties of Iris", columns = 3, points = list(pch = super.sym$pch[1:3], col = super.sym$col[1:3]), text = list(c("Setosa", "Versicolor", "Virginica"))))
2. scatterplotMatrix {car}
可以直接指定主對(duì)角線上的圖形元素(密度圖、箱線圖、直方圖、QQ圖等),還可以在散點(diǎn)圖中添加擬合曲線、平滑曲線、相關(guān)讀橢圓等。
library(car) scatterplotMatrix(~ income + education + prestige | type, data=Duncan)
3. ggscatmat {GGally}
簡(jiǎn)化版的ggpairs,只有五個(gè)參數(shù):數(shù)據(jù)源、觀測(cè)范圍設(shè)定、顏色、透明度及相關(guān)度計(jì)算方法。
library(GGally) data(flea) ggscatmat(flea, columns = 2:4, color = "species")
4. cpairs {gclus}
library(gclus) data(USJudgeRatings) judge.cor <- cor(USJudgeRatings) judge.color <- dmat.color(judge.cor) cpairs(USJudgeRatings,panel.colors=judge.color,pch=".",gap=.5)
“R語言相關(guān)關(guān)系可視化函數(shù)有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。