返回

r-指定三个聚类组,但将树状图聚类为四个

发布时间:2022-05-23 23:53:47 230
# 数据

我有一个令人沮丧的问题,我无法复制(我希望我可以)。我用三个生态数据集生成了树状图,使用相同的代码,但每个都有唯一的对象。树状图中的每片叶子都是一个调查区,物种的存在/丰度推动了聚类。

我将树状图分为3组,并对每组进行颜色编码。当使用欧几里德距离进行聚类时,这适用于所有三个数据集,当使用布雷-柯蒂斯距离进行聚类时,这适用于我的两个数据集。但是:第三个数据集在使用Bray Curtis时会将两片叶子聚类,并强制颜色代码循环使用,创建k=4组,尽管指定了k=3。

我在下面粘贴了一个代码示例,以及;“正确”;和;“错误”;树状图。很好奇是否有人有任何故障排除建议,因为我无法提供复制此错误的代码。TIA。

我尝试过:

  • 删除自定义颜色值(没有效果,当k=3时仍会得到4个簇)。
  • 向“dend”对象添加cutree参数,但这会在stats::cutree(tree,k=k,h=h,…)中产生error“error”:“树”的“高度”组件未排序(递增)”

示例代码(与用于每个树状图的唯一对象的格式相同)。请从访问csvhttps://drive.google.com/file/d/12eXIXVuHTu4BLGxcGu18bqhT85ZOHkNW/view?usp=sharing.请参见文件clusterdata。问题数据集的csv。Colnames是物种;行是绘图ID;值为封面类仓位(0=不存在,1=<25%,2=25-50%,等等)

#library(dendextend)
d <- read.csv("clusterdata.csv")

dend <- d %>% 
vegdist(method = "bray") %>% 
hclust(method = "ward.D") %>% 
# cutree(h = 3) %>% 
as.dendrogram()

mycol <- c("#009E73", "#0072B2", "#E69F00")

dend.plot <-  as.dendrogram(dend) %>%
   set("branches_lwd", 2) %>% # Branches line width
   set("branches_k_color", mycol, k = 3) %>% # Color branches by groups
   set("labels_cex", 0.5) # Change label size
plot(dend.plot, ylab = "Bray-Curtis Distance", main = "why would clusters be different?")

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像