????????話不多說,先看最終效果:
????????圓形樹狀圖是樹狀圖的一個變型,其實都是層次聚類。
接下來看代碼步驟:
首先要先安裝兩個包:
install.packages("ggtree")
install.packages("readxl")
咱就別問問什么昂,直接安裝就行,代碼復制過去,點一下回車鍵就好~
????????安裝完咱就開始導入數據,我的數據是這樣的:
就是隨便找的數據,就30多個,在這里我就不上傳了,小伙伴們自己簡單做一些就好~
file_path<-"G:/R代碼/聚類測試數據.xlsx"data <- read_excel(file_path)
#導入數據
導完數據,開始計算距離矩陣:
mydata<-hclust(dist(data))
#dist()計算點的距離形成距離矩陣
#hclust()函數會根據距離矩陣將數據點逐步合并成不同的聚類
然后開始畫圖:
p=ggtree(mydata,layout = "circular")+geom_text(aes(label=node))#顯示樹狀圖每個分支的標簽
#layout = "circular"設置樹狀圖為圓形,
然后我們觀察到,樹狀圖分為四類處的值分別為:38,40,42,43。有了這些值就可以給不同類劃分顏色區域
為避免過于凌亂,我們在觀察到值之后就注釋掉代碼。然后開始下一步
geom_tiplab2(offset=0.5, size=3,fontface="bold",color="black")+
#offset=0.5,標簽偏移量,正值向外偏,負值向內。fontface="bold"標簽字體為粗體geom_highlight(node = 38,fill="red",alpha=0.5)+
#指定38號節點部分設置為紅色,透明度為0.5geom_highlight(node=40,fill="blue")+geom_highlight(node=42,fill="orange")+geom_highlight(node=43,fill="pink")
然后圖就變成這樣:
有了這個,我們就剩最后一個步驟,給每個類定一個標簽:
geom_cladelabel(node=38,label="A",offset=3,barsize =2,hjust=-1,vjust=-0.5,color="red")+
#barsize =2,標簽條寬度。hjust=-1,水平對齊方式。vjust=-0.5,垂直對齊方式geom_cladelabel(node=40,label="B",offset=3,barsize =2,hjust=1.5,vjust=-0.5,color="blue")+geom_cladelabel(node=42,label="D",offset=3,barsize=2,hjust=-3,vjust=0.1,color="orange")+geom_cladelabel(node=43,label="C",offset=3,barsize=2,hjust=2,color="pink")
運行結果如下:
完整代碼如下:
library(readxl)
library(ggtree)file_path<-"G:/R代碼/聚類測試數據.xlsx"data <- read_excel(file_path)mydata<-hclust(dist(data))ggtree(mydata,layout = "circular")+
#geom_text(aes(label=node))+geom_tiplab2(offset=0.5, size=3,fontface="bold",color="black")+geom_highlight(node = 38,fill="red",alpha=0.5)+geom_highlight(node=40,fill="blue")+geom_highlight(node=42,fill="orange")+geom_highlight(node=43,fill="pink")+geom_cladelabel(node=38,label="A",offset=3,barsize =2,hjust=-1,vjust=-0.5,color="red")+geom_cladelabel(node=40,label="B",offset=3,barsize =2,hjust=1.5,vjust=-0.5,color="blue")+geom_cladelabel(node=42,label="D",offset=3,barsize=2,hjust=-3,vjust=0.1,color="orange")+geom_cladelabel(node=43,label="C",offset=3,barsize=2,hjust=2,color="pink")
小伙伴們換成自己的數據就可以運行啦~
ok,這篇就到這里啦,歡迎小伙伴們批評指正~