R語言繪製熱圖(其實是相關係數圖)實踐(二)corrplot包

前言

在我的上一篇的內容中(R語言繪製熱圖實踐(一)pheatmap包 ),我以繪製相關係數圖爲出發點,介紹了使用pheatmap包畫相關係數圖和熱圖的一些使用。
爲了對比,這篇將介紹使用R包corrplot進行相關係數圖的一些實踐以及corrplot包的一些使用。

corrplot包簡介

官方文檔
The corrplot package is a graphical display of a correlation matrix, confidence interval. It also contains some algorithms to do matrix reordering. In addition, corrplot is good at details, including choosing color, text labels, color labels, layout, etc.
 
簡單地說,corrplot包主要針對相關係數輸出的結果進行可視化,可以實現選擇顏色,文本標籤,顏色標籤,佈局等的操作。

語法和常用參數介紹

函數語法

corrplot(corr,
	method = c("circle", "square", "ellipse", "number", "shade", "color", "pie"),
	type = c("full", "lower", "upper"), add = FALSE,
	col = NULL, bg = "white", title = "",  is.corr = TRUE,		
	diag = TRUE, outline = FALSE, mar = c(0,0,0,0),
	addgrid.col = NULL, addCoef.col = NULL, addCoefasPercent = FALSE, 
	order = c("original", "AOE", "FPC", "hclust", "alphabet"),
	hclust.method = c("complete", "ward", "single", "average",
                      "mcquitty", "median", "centroid"),
	addrect = NULL, rect.col = "black", rect.lwd = 2,
	tl.pos = NULL, tl.cex = 1,
	tl.col = "red", tl.offset = 0.4, tl.srt = 90,
	cl.pos = NULL, cl.lim = NULL,
	cl.length = NULL, cl.cex = 0.8, cl.ratio = 0.15, 
	cl.align.text = "c",cl.offset = 0.5,
	addshade = c("negative", "positive", "all"),
	shade.lwd = 1, shade.col = "white",
	p.mat = NULL, sig.level = 0.05,
	insig = c("pch","p-value","blank", "n"),
	pch = 4, pch.col = "black", pch.cex = 3,
	plotCI = c("n","square", "circle", "rect"),
	lowCI.mat = NULL, uppCI.mat = NULL, ...)

參數介紹

這部分的內容參考了參考資料中的第一篇。

corr:需要可視化的相關係數矩陣

method:指定可視化的方法,可以是圓形、方形、橢圓形、數值、陰影、顏色或餅圖形

type:指定展示的方式,可以是完全的、下三角或上三角(“full”,“upper"和"lower”)

col:指定圖形展示的顏色,默認以均勻的顏色展示

bg:指定圖的背景色

title:爲圖形添加標題

is.corr:是否爲相關係數繪圖,默認爲TRUE,同樣也可以實現非相關係數的可視化,只需使該參數設爲FALSE即可

diag:是否展示對角線上的結果,默認爲TRUE

outline:是否繪製圓形、方形或橢圓形的輪廓,默認爲FALSE

mar:具體設置圖形的四邊間距

addgrid.col:當選擇的方法爲顏色或陰影時,默認的網格線顏色爲白色,否則爲灰色

addCoef.col:爲相關係數添加顏色,默認不添加相關係數,只有方法爲number時,該參數才起作用

addCoefasPercent:爲節省繪圖空間,是否將相關係數轉換爲百分比格式,默認爲FALSE

order:指定相關係數排序的方法,可以是原始順序(original)、特徵向量角序(AOE)、第一主成分順序(FPC)、層次聚類順序(hclust)和字母順序,一般”AOE”排序結果都比”FPC”要好

hclust.method:當order爲hclust時,該參數可以是層次聚類中ward法、最大距離法等7種之一

addrect:當order爲hclust時,可以爲添加相關係數圖添加矩形框,默認不添加框,如果想添加框時,只需爲該參數指定一個整數即可

rect.col:指定矩形框的顏色

rect.lwd:指定矩形框的線寬

tl.pos:指定文本標籤(變量名稱)的位置,當type=full時,默認標籤位置在左邊和頂部(lt),當type=lower時,默認標籤在左邊和對角線(ld),當type=upper時,默認標籤在頂部和對角線,d表示對角線,n表示不添加文本標籤

tl.cex:指定文本標籤的大小

tl.col:指定文本標籤的顏色

cl.pos:圖例(顏色)位置,當type=upper或full時,圖例在右表®,當type=lower時,圖例在底部,不需要圖例時,只需指定該參數爲n

addshade:只有當method=shade時,該參數纔有用,參數值可以是negtive/positive和all,分表表示對負相關係數、正相關係數和所有相關係數添加陰影。注意:正相關係數的陰影是45度,負相關係數的陰影是135度

shade.lwd:指定陰影的線寬

shade.col:指定陰影線的顏色

實踐

實踐數據還是使用上一篇中畫相關係數的數據。
(1)準備數據集
首先還是加載數據集:all_data
all_data爲數據框格式,共包含9696996行,5列(5個樣本),如下圖所示。
在這裏插入圖片描述
爲每列指定列名

colnames(all_data) <- c( 's1', 's2','s3 ', 's4','s5') 

(2)計算樣本間的相關係數

matrix <- cor (all_data[1:5])

這裏我想補充一下cor()函數的用法(這裏主要參考了第二篇參考資料)。在R語言中,通常使用cor函數進行相關係數分析,可以分別指定向量,也可以指定給cor函數一個數據框。
基本語法

cor(x,y=NULL,use="everything",method= c("pearson","kendall","spearman"))

use 用來指定處理缺失值的方式,可以爲"everything", “all.obs”, “complete.obs”, “na.or.complete”, 或者 “pairwise.complete.obs”.
method 是可選的三種相關係數計算方法,默認情況下使用的是pearson相關係數

這三種計算相關係數簡介:
pearson相關係數:即皮爾遜相關係數,用於橫向兩個連續性隨機變量間的相關係數。

spearman相關係數:即斯皮爾曼相關係數,用於衡量分類定序變量間的相關程度。

kendall相關係數:即肯德爾相關係數,也是一種秩相關係數,不過它所計算的對象是分類變量。

(3)corrplot包對相關係數輸出的結果進行可視化

#直接畫圖,不設置其它參數
corrplot(corr=matrix)

在這裏插入圖片描述
控制單元格形狀和內容

# 換用不同method,分別顯示數字和顏色(method can be "circle", "square", "ellipse", "number", "shade", "color", "pie")
# method 默認爲“circle”
corrplot(M, method = "number") 
corrplot(matrix, method = "color")  

在這裏插入圖片描述
在這裏插入圖片描述
控制單元格展示的方式以及混合展示

#指定展示的方式,可以是完全的、下三角或上三角
corrplot(matrix, type = "upper")

在這裏插入圖片描述

# corrplot.mixed()可以混合可視化樣式
#默認上三角爲circle,下三角爲number,可以修改
corrplot.mixed(matrix)  
corrplot.mixed(matrix, lower = "ellipse", upper = "pie")

在這裏插入圖片描述

在這裏插入圖片描述

corrplot.mixed(matrix, lower = "number", upper = "pie", tl.col = "black",lower.col = "black", number.cex = 1)  
#tl.col 修改對角線的顏色,lower.col 修改下三角的顏色,number.cex修改下三角字體大小

在這裏插入圖片描述

指定order方式

#指定order按hclust聚類方式排序,addrect是添加分組矩形,可自定義分組類
corrplot(matrix,order = "hclust",addrect  = 3)

在這裏插入圖片描述

#當order = "hclust"時,可使用hclust.method選擇層次聚類的方法
#hclust.method可以爲“complete”, “ward”, “single”, “average”, “mcquitty”, “median”, “centroid”
corrplot(matrix,order = "hclust",addrect  = 3,hclust.method="ward.D2")

在這裏插入圖片描述

圖例標籤控制

#圖例標籤控制
corrplot(matrix, method="number",order = "AOE", cl.pos = "n", tl.pos = "n") 
#控制對角標籤旋轉45度
corrplot(matrix, type = "lower", order = "hclust", tl.col = "black", tl.srt = 45)
#修改圖例範圍
corrplot(matrix,order = "AOE", cl.lim = c(0, 1))

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

#改變單元格顏色以及背景顏色bg
col3 <- colorRampPalette(c("red", "white", "blue"))
corrplot(matrix, order = "hclust", addrect = 3, col = col3(100), bg = "lightblue")

在這裏插入圖片描述

summary

總結一下,corrplot包使用起來非常簡單,也有很多參數可以畫出各種花哨的圖……甚至可以做顯著性檢驗(我的數據結果都很好,也很少,就沒有做)和月亮的陰晴圓缺(具體參見參考資料3和官方文檔)。
但是,最大的缺點: 沒辦法同時作層次聚類的樹圖,考慮到這點,我還是喜歡pheatmap多一點,雖然它不是專門畫相關係數的圖。
最後,用這個包畫一個生物相關論文中常見的相關係數圖:

corrplot(corr=matrix,method = "color",order = "hclust",tl.col="black",addrect=4,addCoef.col = "grey")

在這裏插入圖片描述
 

參考資料

R語言相關係數可視化之corrplot包
左手用R右手Python系列11——相關性分析
R畫月亮陰晴圓缺:corrplot繪圖相關係數矩陣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章