我用下面的代碼在特定的高度切割樹狀圖。我遇到的問題是,當我切割樹狀圖時,我無法弄清楚如何向節點添加標籤。如何切割樹狀圖使用R程序的標籤?如何標記切割樹狀圖的終端節點?
library(Heatplus)
cc=as.dendrogram(hclust(as.dist(mat),method="single"))
cutplot.dendrogram(cc,h=20)
我用下面的代碼在特定的高度切割樹狀圖。我遇到的問題是,當我切割樹狀圖時,我無法弄清楚如何向節點添加標籤。如何切割樹狀圖使用R程序的標籤?如何標記切割樹狀圖的終端節點?
library(Heatplus)
cc=as.dendrogram(hclust(as.dist(mat),method="single"))
cutplot.dendrogram(cc,h=20)
相當數量挖到幫助文檔?dendrogram
後,我無意中發現含有爲例做一些非常相似的dendrapply
功能。這裏是您的解決方案的基礎上,實施例的變形例在?dendrapply
:
創建樹狀圖,並在高度h=20
切割:
dhc <- as.dendrogram(hc <- hclust(dist(USArrests), "ave"))
chc <- cut(dhc, h=20)$upper
定義與newLabels的載體,以及一個功能newLab
修飾單個節點標籤。然後,它傳遞給dendrapply
:
newLabels <- paste("Custom", 1:22, sep="_")
local({
newLab <<- function(n) {
if(is.leaf(n)) {
a <- attributes(n)
i <<- i+1
attr(n, "label") <- newLabels[i]
}
n
}
i <- 0
})
nhc <- dendrapply(chc, newLab)
labels(nhc)
[1] "Custom_1" "Custom_2" "Custom_3" "Custom_4" "Custom_5" "Custom_6"
[7] "Custom_7" "Custom_8" "Custom_9" "Custom_10" "Custom_11" "Custom_12"
[13] "Custom_13" "Custom_14" "Custom_15" "Custom_16" "Custom_17" "Custom_18"
[19] "Custom_19" "Custom_20" "Custom_21" "Custom_22"
plot(nhc)
這裏是爲了什麼Andrie寫的,而是採用了全新的包裝被稱爲「」,正是專爲這樣的事情修改方案。
你可以看到在以下網址的「用法」一節中的包的介紹和護身符許多例子,:https://github.com/talgalili/dendextend
以下是此問題的解決方案:
# define dendrogram object to play with:
dhc <- as.dendrogram(hc <- hclust(dist(USArrests), "ave"))
chc <- cut(dhc, h=20)$upper
# loading the package
require(dendextend)# let's add some color:
# change labels with a simple assignment:
labels(chc) <- paste("Custom", 1:22, sep="_")
plot(chc)
對於安裝包(因爲我還沒有把它上傳到CRAN),用途:
####################
## installing dendextend for the first time:
if (!require('installr')) install.packages('installr'); require('installr')
## install.Rtools() # run this if you are using Windows and don't have Rtools
require2(devtools)
install_github('dendextend', 'talgalili')
require2(Rcpp)
install_github('dendextendRcpp', 'talgalili')
最佳, 塔爾
cc$labels
這是樹狀圖中所有元素的向量。
cc$labels <- myVector
您可以在自己的向量添加到更改標籤
什麼是樹狀圖,而語言是什麼呢? –
@john這是R語言。我正在使用R搭檔做羣集聚類。 – akash
好吧,什麼是樹狀圖?至少要說明什麼是知識領域。統計?物理? –