r - 将聚类结果叠加到排序上

标签 r cluster-analysis hclust vegan

我需要将通过切割给定相似度级别的树状图生成的簇叠加到排序结果 (NMDS) 上。我一直在研究 ade4 和 vegan,但没有找到任何明显的解决方案来解决这个问题。

我目前正在使用 Primer-e(参见下面的屏幕截图),但发现图形有点有限。任何方向正确的观点都会受到高度赞赏。

enter image description here

最佳答案

这对于素食主义者来说非常简单,我有一个 blog post这详细解释了其中的一些内容,但没有解释有关集群的部分。

这是一个简单的示例,我假设您可以将其转换为您正在使用的任何包/代码。

加载包和数据集

require(vegan)
data(dune)

计算相异矩阵并对其进行聚类,将树状图切割为 3 组

dij <- vegdist(dune) ## bray curtis dissimilarity
clu <- hclust(dij, method = "average")
grp <- cutree(clu, 3)

看看grp

R> grp
 2 13  4 16  6  1  8  5 17 15 10 11  9 18  3 20 14 19 12  7 
 1  1  1  2  1  1  1  1  3  2  1  1  1  1  1  2  2  3  1  1

请注意,现在使用数据集中每个样本(顶行)的簇成员资格(第二行)。

接下来安装 NMDS

set.seed(2) ## setting a seed to make this reproducible
ord <- metaMDS(dune)

在此示例中,我将根据簇成员资格对点进行着色,因此我需要定义一个颜色向量,每个簇一个颜色

col <- c("red2", "green4", "mediumblue")

我现在可以使用 grpcol 通过索引到 col 为我绘制的每个点(样本)生成颜色名称向量> 使用grp。例如:

R> col[grp]
 [1] "red2"       "red2"       "red2"       "green4"     "red2"      
 [6] "red2"       "red2"       "red2"       "mediumblue" "green4"    
[11] "red2"       "red2"       "red2"       "red2"       "red2"      
[16] "green4"     "green4"     "mediumblue" "red2"       "red2"

剩下的就是绘制 NMDS 顺序并添加点和图例。我禁止在 plot() 调用中进行任何绘图,这样我就可以更好地控制在下一行中添加点。第三行只是添加了一个图例。

plot(ord, type = "n", display = "sites")
points(ord, col = col[grp], bg = col[grp], pch = 21)
legend("topright", legend = paste("Cluster", 1:3),
       col = col, pt.bg = col, bty = "n", pch = 21)

结果图应如下所示:

NMDS plot with cluster membership overlain

<小时/>

更新:要将每个点簇的凸包添加到排序图,您可以使用ordihull()函数。继续上面的示例,我们添加凸包如下

ordihull(ord, groups = grp, display = "sites")

此时该图将如下所示

adding convex hulls for the clusters

<小时/>

注意:vegan的更高级别的plot()方法是专门设计的,用于快速而肮脏地显示排序和因此不接受颜色向量或绘图字符。相反,我们希望您构建较低级别的绘图流方法,例如我在这里使用的 points() 方法。

关于r - 将聚类结果叠加到排序上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12436902/

相关文章:

c++ - 使用 Rcpp 构建一个 R 包,其中包含带有限制限定符的 C 源代码和 header ?

r - 如何绘制已在 R 中按行排序的数据的中位数和四分位数范围?

r - 如何根据 R 中的条件从数据框中删除行?

python - Scikit K 均值聚类性能度量

algorithm - 聚合自动生成的特征向量

r - hclust 函数的聚类列表

r - 检查操作系统是否为Solaris

matlab - 聚类和matlab

r - R中水平树状图的树切割和簇周围的矩形

r - 将外部树状图用于复杂热图中的 cluster_rows 时,外部树状图不会保持相同的结构