我正在使用 hclust 函数:
points <- data.frame(ID = c('A','B','C','D','E'),
x = c(3,4,2.1,4,7),
y = c(6.1,2,5,6,3))
d <- dist(as.matrix(points[, 2:3]))
clusters <- hclust(d,method = "complete")
plot(clusters, labels=points$ID)
Run Code Online (Sandbox Code Playgroud)
有没有办法显示点连接处的值(或节点值(样本之间的差异最小))?
我希望我的情节看起来像图片上的那样。
注意:树状图上显示的值不是正确的值。
我有一个包含近 2000 个样本的 hclust 树。我已将其切割成适当数量的簇,并希望绘制树状图,但以我切割簇的高度结束,而不是一直切割到每片叶子。每个绘图指南都是关于按簇为所有叶子着色或绘制一个盒子,但似乎没有什么可以完全保留切割线下方的叶子。
我的完整树状图如下所示:
我想把它画出来,就好像它停在我在这里绘制 abline 的地方(例如):
我有五个要点,我需要根据这些要点创建树状图。可以使用“树状图”功能来找到这些点的顺序,如下所示。但是,我不想使用树状图,因为它速度慢并且会导致大量点出错(我在这里用Python替代的方法来查找树状图)问这个问题。有人可以指出我如何将“链接”输出(Z)转换为“树状图(Z)['ivl']”值。
>>> from hcluster import pdist, linkage, dendrogram
>>> import numpy
>>> from numpy.random import rand
>>> x = rand(5,3)
>>> Y = pdist(x)
>>> Z = linkage(Y)
>>> Z
array([[ 1. , 3. , 0.11443378, 2. ],
[ 0. , 4. , 0.47941843, 2. ],
[ 5. , 6. , 0.67596472, 4. ],
[ 2. , 7. , 0.79993986, 5. ]])
>>>
>>> dendrogram(Z)['ivl']
['2', '1', '3', '0', '4']
>>>
Run Code Online (Sandbox Code Playgroud) 我正在根据我的数据绘制聚类图。我已经完成了整个情节,但我的标签文本太大,无法正确阅读情节。任何人都知道如何使标签更小。
我正在使用“sparcl”包,我的功能是:
ColorDendrogram(fit,y=col.int, main = "Clusters from 216 samples",
branchlength = 0.20, labels = fit$labels, xlab = NULL,
sub = NULL, ylab = "", cex.main = NULL)
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,分支文本太大并且它们相互重叠。我希望叶子的文字小 25%。我已经查看了 Sparcl 包的文档,但这似乎不起作用。
我正在进行聚类分析并创建树形图.我使用了ggdendrogram包,想要使用它的输出ggplot2.我想知道如何获得与叶标签相同的x标签.谢谢
D1 <- as.dist(
matrix(
data=
c( 0, 9, 3, 6, 11
, 9, 0, 7, 5, 10
, 3, 7, 0, 9, 2
, 6, 5, 9, 0, 8
, 11, 10, 2, 8, 0)
, nrow= 5
, ncol = 5
, byrow=TRUE
))
HCD1 <- hclust(d = D1, method="single", members=NULL)
library(ggdendro)
ggdendrogram(HCD1, theme_dendro=FALSE)
Run Code Online (Sandbox Code Playgroud)

HCD1Data <- dendro_data(as.dendrogram(HCD1))
library(ggplot2)
p1 <-
ggplot(data = HCD1Data$segments) +
geom_segment(aes(x=x, y=y, xend=xend, yend=yend))
print(p1)
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几天来翻转树状图,以便最后一个基因是图中的第一个,第一个是最后一个。但即使我设法移动叶子,内部排序也不一样。这是我的脚本:
cluster.hosts <- read.table("Norm_0_to1_heatmap.txt", header = TRUE, sep="", quote="/", row.names = 1)
# A table with 8 columnns and 229 rows cirresponding to gene expression
hosts.dist <- dist(cluster.hosts, method = "euclidean", diag = FALSE, upper = FALSE, p = 2)
hc <- hclust(hosts.dist, method = "average")
dd <- as.dendrogram(hc)
order.dendrogram(dd)
X11()
par(cex=0.5,font=3)
plot(dd, main="Dendrogram of Syn9 genes")
order.dd <- order.dendrogram(dd) #the numbers in the order indicate the position of the gene in the original table
#Then I generate a vector …Run Code Online (Sandbox Code Playgroud) 在 R 中使用 heatmaply 后,我试图获取所有行元素的 5 个列表。我设置 k_row = 5,以便树状图显示 5 种不同的颜色。我只想返回一个包含 5 个列表的列表,其中每个列表都包含簇内的行元素。行是名称,列是类别。
我想按数据框中定义的特定组对树状图的分支进行着色。
library(reshape2)
library(factoextra) # clustering visualization
library(dendextend)
#iris dataset
#defining colors
colori = rep(NA, length=length(iris$Species))
colori[which(iris$Species=="setosa")] = "red"
colori[which(iris$Species=="versicolor")] = "blue"
colori[which(iris$Species=="virginica")] = "yellow"
iris_dist <- dist(iris[ ,1:4],)
hc1_iris <- hclust(iris_dist,method = "average")
col_dendro_iris <- color_branches(as.dendrogram(hc1_iris),groupLabels =T, clusters = iris$Species,col=colori)
col_dendro_iris_plot <- plot(col_dendro_iris,main = "Dendrogram of normalized BLS\ncolored by manmade groups",labels = NULL,xlab = NULL)
Run Code Online (Sandbox Code Playgroud)
编辑:当我这样做时它有效
pca_iris <- PCA(iris[ ,1:4])
colori = rep(NA, length=length(iris$Species))
colori[which(iris$Species=="versicolor")] = "red"
colori[which(iris$Species=="virginica")] = "yellow"
colori[which(iris$Species=="setosa")] = "blue"
# species <- iris$Species
iris_gr <- …Run Code Online (Sandbox Code Playgroud) 使用hclust函数在R中执行层次聚类时.你怎么知道最终合并的高度?
所以要澄清一些R默认数据:
hc <- hclust(dist(USArrests))
dendrogram1 = as.dendrogram(hc)
plot(hc)
Run Code Online (Sandbox Code Playgroud)
将导致具有所有聚类信息的变量hc.

和树状图:

正如您在树形图上看到的那样,最终合并发生在> 200(约300)的高度.但是树状图是如何知道的?此信息不在hc.height变量中,也不在dendrogram1变量中.提到的最高合并是169.

如果dendrogram1变量不包含此信息,则绘图函数如何知道合并必须在300的高度发生?

我问这个是因为我需要这个数字(+ - 300)用于其他应用程序,从图中读取它是非常不切实际的.
感谢任何愿意帮助的人!
dendrogram ×9
r ×8
hclust ×3
plot ×2
data-mining ×1
dendextend ×1
factoextra ×1
ggdendro ×1
ggplot2 ×1
heatmap ×1
heatmaply ×1
plotly ×1
python ×1