标签: hclust

hclust函数的聚类列表

使用plot(hclust(dist(x)))方法,我能够绘制一个簇树映射.有用.然而,我想获得所有集群的列表,而不是树图,因为我有大量的数据(如150K节点),情节变得混乱.

换句话说,假设if a b c是一个集群,如果d e f g是一个集群,那么我想得到这样的东西:

1 a,b,c
2 d,e,f,g
Run Code Online (Sandbox Code Playgroud)

请注意,这不是我想要的"输出".这只是一个例子.我只是希望能够得到一个簇的列表,而不是一个树图.它可以是向量,矩阵或只是简单的数字,显示元素属于哪些组.

这怎么可能?

r hclust

28
推荐指数
2
解决办法
3万
查看次数

R中的水平树状图与标签

我试图从hclust函数输出中绘制树形图.我希望树形图是水平排列而不是默认值,可以通过(例如)获得

require(graphics)
hc <- hclust(dist(USArrests), "ave")
plot(hc)
Run Code Online (Sandbox Code Playgroud)

我尝试使用as.dendrogram()函数,plot(as.dendrogram(hc.poi),horiz=TRUE)但结果没有有意义的标签:

在此输入图像描述

如果我使用plot(hc.poi,labels=c(...))哪个没有as.dendrogram(),我可以传递labels=参数,但现在树形图是垂直的而不是水平的.有没有办法水平同时排列树形图并分配用户指定的标签?谢谢!

更新:作为USArrests数据集的一个例子,假设我想使用州名的前两个字母的缩写作为标签,这样我想以某种方式labs进入绘图功能:

labs = substr(rownames(USArrests),1,2)

这使

 [1] "Al" "Al" "Ar" "Ar" "Ca" "Co" "Co" "De" "Fl" "Ge" "Ha"
[12] "Id" "Il" "In" "Io" "Ka" "Ke" "Lo" "Ma" "Ma" "Ma" "Mi"
[23] "Mi" "Mi" "Mi" "Mo" "Ne" "Ne" "Ne" "Ne" "Ne" "Ne" "No"
[34] "No" "Oh" "Ok" "Or" "Pe" "Rh" "So" "So" "Te" "Te" "Ut"
[45] "Ve" "Vi" …
Run Code Online (Sandbox Code Playgroud)

r dendrogram hclust

18
推荐指数
2
解决办法
3万
查看次数

如何在R中使用'hclust'作为函数调用

我试着通过以下方式构建聚类方法:

mydata <- mtcars

# Here I construct hclust as a function
hclustfunc <- function(x) hclust(as.matrix(x),method="complete")

# Define distance metric
distfunc <- function(x) as.dist((1-cor(t(x)))/2)

# Obtain distance
d <- distfunc(mydata)

# Call that hclust function
fit<-hclustfunc(d)

# Later I'd do
# plot(fit)
Run Code Online (Sandbox Code Playgroud)

但为什么它会出现以下错误:

Error in if (is.na(n) || n > 65536L) stop("size cannot be NA nor exceed 65536") : 
  missing value where TRUE/FALSE needed
Run Code Online (Sandbox Code Playgroud)

什么是正确的方法呢?

r cluster-analysis function-calls hclust

17
推荐指数
1
解决办法
2万
查看次数

在热图中设置距离矩阵和聚类方法

heatmap.2默认为dist用于计算距离矩阵和hclust用于聚类.现在有人怎么设置dist来使用欧几里德方法和hclust来使用质心方法?我提供了一个可编译的代码示例.我尝试过:distfun = dist(method ="euclidean"),但这不起作用.有任何想法吗?

library("gplots")
library("RColorBrewer")

test <- matrix(c(79,38.6,30.2,10.8,22,
81,37.7,28.4,9.7,19.9,
82,36.2,26.8,9.8,20.9,
74,29.9,17.2,6.1,13.9,
81,37.4,20.5,6.7,14.6),ncol=5,byrow=TRUE)
colnames(test) <- c("18:0","18:1","18:2","18:3","20:0")
rownames(test) <- c("Sample 1","Sample 2","Sample 3", "Sample 4","Sample 5")
test <- as.table(test)
mat=data.matrix(test)

heatmap.2(mat,
dendrogram="row",
Rowv=TRUE,
Colv=NULL,
distfun = dist,
hclustfun = hclust,
xlab = "Lipid Species",
ylab = NULL,
colsep=c(1),
sepcolor="black",
key=TRUE,
keysize=1,
trace="none",
density.info=c("none"),
margins=c(8, 12),
col=bluered
)
Run Code Online (Sandbox Code Playgroud)

r distribution heatmap hclust

15
推荐指数
1
解决办法
2万
查看次数

从r中的树状图中删除x轴标签

我使用xlab =""来抑制x标签但仍在我的树形图中得到'sub-x-label'.如何删除它并删除树形图下的任何额外空间?

require(graphics)

hc <- hclust(dist(USArrests), "ave")
plot(hc,xlab="")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

plot r hclust

12
推荐指数
2
解决办法
2万
查看次数

在R 3.01中更改Cluster Dendrogram的标签大小

是否有人找到了解决R 3明显错误的方法,该错误禁止更改群集树形图上的标签大小?

以下代码用于在将R更新为3.01之前正常工作(我认为之前的版本是2.15):

plot(hclust, labels = data[, 1], cex = 0.3)
Run Code Online (Sandbox Code Playgroud)

现在,在更改cex参数时,标签大小没有变化.

size label r hclust

10
推荐指数
1
解决办法
2万
查看次数

如何在R树形图中正确着色边缘或绘制rects?

我产生这种树状图,使用R的hclust(),as.dendrogram()plot.dendrogram()功能.

我使用dendrapply()函数和局部函数来为叶子着色,这很好.

我有统计测试的结果,表明一组节点(例如树的右下角的" _+v\_stat5a\_01_"和" _+v\_stat5b\_01_" 的簇)是重要的还是重要的.

我还有一个可以使用的本地函数,dendrapply()它在我的树形图中找到包含重要叶子的确切节点.

我想(根据例子):

  1. 为连接" _+v\_stat5a\_01_"和" _+v\_stat5b\_01_" 的边缘着色; 要么,
  2. 画一个rect()" _+v\_stat5a\_01_"和" _+v\_stat5b\_01_"

我有以下本地函数("nodes-in-leafList-match-nodes-in-clusterList"条件的详细信息并不重要,但它突出显示了重要的节点):

markSignificantClusters <<- function (n) {
  if (!is.leaf(n)) {
     a <- attributes(n)
     leafList <- unlist(dendrapply(n, listLabels))
     for (clusterIndex in 1:length(significantClustersList[[1]])) {
       clusterList <- unlist(significantClustersList[[1]][clusterIndex])
       if (nodes-in-leafList-match-nodes-in-clusterList) {
          # I now have a node "n" that contains significant leaves, and
          # I'd like …
Run Code Online (Sandbox Code Playgroud)

r dendrogram edge-detection hclust

8
推荐指数
1
解决办法
2609
查看次数

树枝切割和簇周围的矩形,用于R中的水平树状图

我试图将层次聚类的结果绘制R为树状图,矩形识别聚类.

下面的代码用于垂直树形图,但对于水平树形图(horiz=TRUE),不绘制矩​​形.有没有办法对水平树形图做同样的事情.

library("cluster")
dst <- daisy(iris, metric = c("gower"), stand = FALSE)
hca <- hclust(dst, method = "average")
plot(as.dendrogram(hca), horiz = FALSE)
rect.hclust(hca, k = 3, border = "red")
Run Code Online (Sandbox Code Playgroud)

此外,我想绘制一条线来切割所需距离值的树.如何在R中绘制该cutree函数.函数返回聚类,但是也可以绘制它.

cutree(hca, k = 3)
Run Code Online (Sandbox Code Playgroud)

我正在寻找的所需输出是这样的.

树状图

如何在R中完成这项工作?

r dendrogram hclust ggdendro dendextend

8
推荐指数
2
解决办法
9345
查看次数

绘制带有悬挂叶子的水平树状图?(右)

我想创建一个带有水平标签的树状图,但让叶子根据其高度悬挂,而不是仅仅掉落到图的边缘。

例子:

par(mfrow = c(1,2))
hc <- hclust(dist(USArrests), "ave")
plot(hc) # a plot with hanging branches
plot(as.dendrogram(hc), horiz = TRUE) # a horizontal plot, but the branches are not hanging
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

关于如何编程有什么建议吗?

谢谢。

r dendrogram hclust dendextend

5
推荐指数
1
解决办法
3721
查看次数

合并多个 hclust 对象(或树状图)

有没有一种简单的方法可以在根处合并多个 hclust 对象(或树状图)?

我已经使示例尽可能完整来说明我的问题。

假设我想按区域对 USArrest 进行聚类,然后将所有 hclust 对象联合起来,将它们绘制在热图中。

USArrests
Northeast <- c("Connecticut", "Maine", "Massachusetts", "New Hampshire", "Rhode Island", 
"Vermont", "New Jersey", "New York", "Pennsylvania")
Midwest <-  c("Illinois", "Indiana", "Michigan", "Ohio",  "Wisconsin", 
    "Iowa", "Kansas", "Minnesota", "Missouri", "Nebraska", "North Dakota", 
    "South Dakota")
South <- c("Delaware", "Florida", "Georgia", "Maryland", "North Carolina", 
           "South Carolina", "Virginia", "West Virginia", 
           "Alabama", "Kentucky", "Mississippi", "Tennessee", "Arkansas", 
           "Louisiana", "Oklahoma", "Texas")
West <- c("Arizona", "Colorado", "Idaho", "Montana", "Nevada", "New Mexico", 
          "Utah", "Wyoming", "Alaska", "California", "Hawaii", "Oregon", "Washington")

h1 <- …
Run Code Online (Sandbox Code Playgroud)

r dendrogram hclust pheatmap

5
推荐指数
1
解决办法
1592
查看次数