示例圖像
首先安裝需要的包
install.packages("Corrplot") #安裝Corrplot install.packages("RColorBrewer ") #安裝RColorBrewer install.packages("showtext")#安裝showtext install.packages("sysfonts")#安裝sysfonts install.packages("showtextdb")#安裝showtextdb install.packages("showtext")#安裝RColorBrewer
加載需要的包
lapply(c("corrplot","showtex","RColorBrewer","showtextdb","sysfonts"))
如果需要更換字體,就加載系統內字體
font.families() #查看添加的字體 showtext.begin() #加載字體 **showtext.end() #停止加載字體
導入數據[示例]
mydataframe<-read.csv(file,header=logical_value,sep="delimiter",row.names="name")
mydataframe:自定義數據名稱,此處將集合名稱定義為mydataframe table:指讀取文件格式為表格 file: csv文件的名稱或路徑夾名稱 header:其后面邏輯值,可填寫TRUE或FALSE,表示文件是否讀取橫列標題 sep:指文件分隔符,如csv用英文逗號分隔 "," row.names:指定表示行標識符的變量(作為行名的表頭)
本次利用自帶的mtcars作為示例
data(mtcars)#加載數據集
mydata <- mtcars[, c(1:7)]#使用前7行數據
查看數據
head(mydata)#查看數據
繪制圖像
pic01<-cor(mydata) corrplot(pic01)
corrplot(mydata)
可以在括號內加入如下定義,改變圖像。
method = c("circle"/"square"/"ellipse"/"number"/ "shade"/"color"/"pie"),
method:指定可視化的方法,可以是圓形、方形、橢圓形、數值、陰影、顏色或餅圖形
type = c("full"/"lower"/"upper"),
type:指定展示的方式,可以是完全的圖形、上三角或下三角(不填時默認為“full”)
col:指定圖像的幾種顏色,默認以均勻的顏色展示,以col = c("purple", "green","white")),為例,即指圖標在(-1,1)區間以紫色、綠色、白色三種顏色的改變表示。
****可以通過colorRampPalette定義
COLOR01<- colorRampPalette(c("#5081ff","#638dff","#b1c6ff","#c3d5ff" ,"#ffffff", "#f7cccc","#f1aeac","#eb8b8a","#e66a68"))(10)
corrplot(pic01,col = COLOR01)
bg = c("white"/"black"/"pink"/……), bg:指定圖的背景色 title = "HokkaidoM", mar=c(0, 0, 1, 0) title:為圖形添加標題 mar=c(0, 0, 1, 0) :設置圖距離(下,左,上,右)四個邊緣的距離 *****若使用標題title必須加mar=c(0, 0, 1, 0),不然標題顯示不全 is.corr = TRUE, is.corr:是否為相關系數繪圖,默認為TRUE,同樣也可以實現非相關系數的可視化,只需使該參數設為FALSE即可 diag = TRUE, diag:是否展示對角線上的結果,默認為TRUE outline = FALSE, outline:是否繪制圓形、方形或橢圓形的輪廓,默認為FALSE addgrid.col = NULL, addgrid.col:當選擇的方法為顏色或陰影時,默認的網格線顏色為白色,否則為灰色 addCoef.col = NULL, addCoef.col:為相關系數添加顏色,默認不添加相關系數,只有方法為number時,該參數才起作用 addCoefasPercent = FALSE, addCoefasPercent:為節省繪圖空間,是否將相關系數轉換為百分比格式,默認為FALSE order = c("original", "AOE", "FPC", "hclust", "alphabet"), hclust.method = c("complete", "ward", "single", "average", "mcquitty", "median", "centroid"), order:指定相關系數排序的方法,可以是原始順序(original)、特征向量角序(AOE)、第一主成分順序(FPC)、層次聚類順序(hclust)和字母順序,一般”AOE”排序結果都比”FPC”要好 hclust.method:當order為hclust時,該參數可以是層次聚類中ward法、最大距離法等7種之一 addrect = NULL, rect.col = "black", rect.lwd = 2, addrect:當order為hclust時,可以為添加相關系數圖添加矩形框,默認不添加框,如果想添加框時,只需為該參數指定一個整數即可 rect.col:指定矩形框的顏色 rect.lwd:指定矩形框的線寬 tl.pos = NULL, tl.pos:指定文本標簽(變量名稱)的位置,當type=full時,默認標簽位置在左邊和頂部(lt),當type=lower時,默認標簽在左邊和對角線(ld),當type=upper時,默認標簽在頂部和對角線,l、r代表左右,d表示對角線,n表示不添加文本標簽 tl.cex = 1, tl.cex:指定文本標簽的大小 tl.col = "red", tl.col:指定文本標簽的顏色 tl.offset = 0.4, tl.offset:設置文本標簽偏移量,即文本標簽和圖像的距離 tl.srt = 90, tl.srt:文本標簽角度 cl.pos = "b"/"r"/"n" cl.pos:圖例(顏色)位置,r圖例在右表,b圖例在底部,不需要圖例時,只需指定該參數為n cl.lim = (x1,x2), 顏色區間限制 cl.length = 數字 顏色區間刻度間隔的數量 cl.cex = 0.8, 顏色刻度標簽數字大小 cl.ratio = 0.15, 顏色刻度粗細 cl.align.text = "l","c","r", 刻度標簽數字顯示在每個刻度的靠左處/中央/靠右處 cl.offset = 0.5, 刻度標簽與顏色刻度條的距離 addshade = c("negative", "positive", "all"), addshade:只有當method=shade時,該參數才有用,參數值可以是negtive/positive和all,分表表示對負相關系數、正相關系數和所有相關系數添加陰影。注意:正相關系數的陰影是45度,負相關系數的陰影是135度 shade.lwd = 1, shade.lwd:指定陰影的線寬 shade.col = "white", shade.col:指定陰影線的顏色 addCoef.col=”顏色” addCoef.col:增加p值 add = TRUE add = :是否與另一圖片拼接,默認為false
p.mat 分析/顯著性分析
cor.mtest <- function(mat, ...) { mat <- as.matrix(mat) n <- ncol(mat) p.mat<- matrix(NA, n, n) diag(p.mat) <- 0 for (i in 1:(n - 1)) { for (j in (i + 1):n) { tmp <- cor.test(mat[, i], mat[, j], ...) p.mat[i, j] <- p.mat[j, i] <- tmp$p.value } } colnames(p.mat) <- rownames(p.mat) <- colnames(mat) p.mat } #構建cor.mtest函數
mydatap<- cor.mtest(mydata) #計算原始數據的p.mat並定義此數據集合
sig.level = 0.05, 篩選的標准以0.05為界 sig.level = c(0.001,0.01,0.05) 設置篩選的各個區間值 insig = c("pch","p-value","blank", "n"), 被篩選的不顯著值為叉叉、p值數字、不顯示任何東西、n insig = "label_sig" 設置被篩選出的為顯著值 pch = 4, pch.col = "black", pch.cex = 3, plotCI = c("n","square", "circle", "rect"), lowCI.mat = NULL, uppCI.mat = NULL, ...)
corrplot(pic01, type = "upper", order = "hclust", p.mat=mydatap, sig.level = 0.05, insig = "label_sig")#繪圖,標記顯著值
corrplot(pic01, type="upper", order="hclust", p.mat = mydatap, sig.level = 0.05)#繪圖,把不顯著的叉掉
corrplot(pic01, type = "upper", order = "hclust", p.mat=mydatap, sig.level = 0.05, insig="blank") #繪圖,把不顯著的空掉
corrplot(pic01, type="lower", order="hclust", p.mat=mydatap, insig = "label_sig", sig.level = c(0.001,0.01,0.05), pch.cex = 2.5,pch.col="white", diag = FALSE,tl.srt =45,tl.col = "black", family="serif",col = COLOR01, tl.cex = 2.5,title = "miraculousdna", mar=c(0, 0, 1, 0),cl.cex = 2.5 )