gpt4 book ai didi

r - 在 R 中有一种方法可以在维恩图中显示层次聚类

转载 作者:行者123 更新时间:2023-12-04 21:40:54 25 4
gpt4 key购买 nike

我正在尝试将分层集群显示为 维恩图 或任何其他有用的显示 其他 一个树状图。我希望能够以多种不同的 View 类型显示我的数据。

目前这样做将绘制一个树状图:

x <- hclust(dist(mtcars))
plot(x)

我该怎么做才能显示 的聚类图外观 像这样:

https://www.projectrhea.org/rhea/images/3/3b/Lecture23VennClusters_OldKiwi.jpg

或这个

http://bl.ocks.org/mbostock/7607535

或在此示例中显示集群数据有意义的任何其他内容。

最好我希望能够在 中做到这一点 Shiny ,但是一个简单的 R 示例就足够了。先感谢您。

最佳答案

您显示的图是聚类图。有不同的方法来制作这些图。这是一种方法。您可以根据需要改变符号,或将其关闭,同样用于填充。此外,还有用于树状图绘制的选项,即 here

library(cluster)

head(mtcars)
fit <- kmeans(mtcars, 3) # 3 clusters
aggregate(mtcars, by=list(fit$cluster), mean)
newmtcars <- data.frame(mtcars, fit$cluster)
head(newmtcars)

# plot cluster solution
library(cluster)
clusplot(mtcars, fit$cluster,
color=TRUE, shade=TRUE, lines=0)

enter image description here

引用: http://www.statmethods.net/advstats/cluster.html
https://stats.stackexchange.com/questions/31083/how-to-produce-a-pretty-plot-of-the-results-of-k-means-cluster-analysis

我不确定维恩图与上面的图有何不同。也许需要重叠组。这取决于数据和树命令。可以尝试改变 tree 命令,在这种情况下 kmeans,在选择迭代次数时会显示一个小的重叠。
fit <- kmeans(mtcars, 3, iter.max = 2)  # 3 clusters, low number of iterations
clusplot(mtcars, fit$cluster,
color=TRUE, shade=FALSE, lines=0)

enter image description here

使用层次聚类实现此目的的一种方法是从树中提取组,然后对结果组使用 clusplot。
fit <- hclust(dist(mtcars))
groups <- cutree(fit, k=3)
clusplot(mtcars, groups[rownames(mtcars)],
color=TRUE, shade=FALSE, lines=0)

要查看树(包括层次树)中具有更多切割的数据如何分段,一种方法是使用切割,然后使用 clusplot
heir_tree_fit <- hclust(dist(mtcars))
for (ncut in seq(1,10)) {
group <- cutree(heir_tree_fit, k=ncut)
clusplot(mtcars, group[rownames(mtcars)],
color=TRUE, shade=FALSE, lines=0, main=paste(ncut,"cuts"))
}

这是 2、6 和 10 次切割的数字

enter image description here

enter image description here

enter image description here

你可以用所有的切割制作一张图
par(new=FALSE)
for (ncut in seq(1,10)) {
group <- cutree(heir_tree_fit, k=ncut)
clusplot(mtcars, group[rownames(mtcars)],
color=TRUE, shade=FALSE, lines=0, xlim=c(-5,5),ylim=c(-5,5))
par(new=TRUE)
}
par(new=FALSE)

enter image description here
制作层次聚类维恩图的另一种方法是从树中提取组,然后对结果组使用 vennDiagram。
# To make a Venn diagram
# source("http://bioconductor.org/biocLite.R")
biocLite("limma")
library(limma)
inGrp1 <- groups==1
inGrp2 <- groups==2
inGrp3 <- groups==3
vennData <- cbind(inGrp1, inGrp2, inGrp3)

aVenn <- vennCounts(vennData)
vennDiagram(aVenn)

VennDiagramMTCAR

关于r - 在 R 中有一种方法可以在维恩图中显示层次聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26495943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com