簡體   English   中英

如何在樹狀圖中選擇某個截止點以下的所有聚類

[英]How to select all clusters, in a dendrogram, below a certain cutoff, in r

我有一個距離矩陣,稱為227列乘227行

"X9_resid_matrix"

這個矩陣代表227種蛋白質,告訴我彼此之間有多么不同。 因此,在右上角為零,因為1,1代表相同的蛋白質,因此它們相同或不同為零。 數字范圍是0-9。

然后,我使用以下命令制作樹狀圖:

"plot(hclust(as.dist(X9_resid_matrix)))"

y軸的范圍是從零到九。

我希望計算機僅告訴我低於某個臨界值的群集。

意思是如果只有31個零距離的群集,那么我想要一個代碼,計算機將用來告訴我這31個零距離的群集是什么。

命令:

cutree(hc, h=0)

當我運行它時似乎沒有這樣做。

例如:我有以下樹狀圖: 單擊此處查看

我想要一個將樹狀圖切割為1高度並僅顯示1和2的命令。

我認為您正在尋找的功能是cut ,它采用樹狀圖對象x並將其在高度h處切片以生成一個包含兩個元素的列表。 第一個元素“ upper”是修剪后的原始樹,第二個元素“ lower”是包含修剪后的分支的列表(更多信息,請參見?dendrogram )。

“下部”元素中的每個分支本身就是樹狀圖,可以照常進行繪制和操縱。 這是一個小例子:

newick <- "((Human:0.01,Chimp:0.03):0.02,(((Whale:0.04,Cow:0.01):0.01,Pig:0.01):0.01,(Dog:0.01,Cat:0.01):0.01):0.04);"
install.packages("phylogram")
dendro <- phylogram::read.dendrogram(text = newick)
plot(dendro)

樹圖

然后可以使用cut命令對樹狀圖對象進行cut

obj <- cut(dendro, h = 0.09)
obj

輸出的列表如下所示:

$upper
'dendrogram' with 2 branches and 2 members total, at height 0.1 

$lower
$lower[[1]]
'dendrogram' with 2 branches and 2 members total, at height 0.08 

$lower[[2]]
'dendrogram' with 2 branches and 5 members total, at height 0.06 

請注意,第二個元素obj$lower包含兩個子樹,這兩個子樹是通過在0.09高度處切割原始樹而得到的。 要提取並繪制這些子樹的第二個,只需使用標准列表子設置語法即可:

subtree <- obj$lower[[2]]
plot(subtree)

子樹圖

要將hc對象轉換為樹狀圖,可以使用as.dendrogram函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM