[英]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.