标签: dendrogram

在 R 中显示树状图节点值

我正在使用 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)

有没有办法显示点连接处的值(或节点值(样本之间的差异最小))?

我希望我的情节看起来像图片上的那样。

注意:树状图上显示的值不是正确的值。

树状图

r dendrogram

3
推荐指数
1
解决办法
1516
查看次数

仅将 hclust 绘制到切割的簇,而不是每个叶子

我有一个包含近 2000 个样本的 hclust 树。我已将其切割成适当数量的簇,并希望绘制树状图,但以我切割簇的高度结束,而不是一直切割到每片叶子。每个绘图指南都是关于按簇为所有叶子着色或绘制一个盒子,但似乎没有什么可以完全保留切割线下方的叶子。

我的完整树状图如下所示:

完整的树状图

我想把它画出来,就好像它停在我在这里绘制 abline 的地方(例如):

在此输入图像描述

plot r dendrogram hclust

3
推荐指数
1
解决办法
1381
查看次数

计算树状图叶的排序

我有五个要点,我需要根据这些要点创建树状图。可以使用“树状图”功能来找到这些点的顺序,如下所示。但是,我不想使用树状图,因为它速度慢并且会导致大量点出错(我在这里用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)

python cluster-analysis data-mining dendrogram

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

如何更改 R 图的标签大小

我正在根据我的数据绘制聚类图。我已经完成了整个情节,但我的标签文本太大,无法正确阅读情节。任何人都知道如何使标签更小。

我正在使用“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 包的文档,但这似乎不起作用。

plot r hierarchical-clustering dendrogram

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

使用ggdendrogram创建树形图

我正在进行聚类分析并创建树形图.我使用了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)

在此输入图像描述

r dendrogram ggplot2 ggdendro

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

使用 R 反转树状图中的叶子顺序

我已经尝试了几天来翻转树状图,以便最后一个基因是图中的第一个,第一个是最后一个。但即使我设法移动叶子,内部排序也不一样。这是我的脚本:

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 dendrogram hclust

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

从 R 中的热图簇中获取属于每个簇的行名称

在 R 中使用 heatmaply 后,我试图获取所有行元素的 5 个列表。我设置 k_row = 5,以便树状图显示 5 种不同的颜色。我只想返回一个包含 5 个列表的列表,其中每个列表都包含簇内的行元素。行是名称,列是类别。

在此输入图像描述

r dendrogram heatmap plotly heatmaply

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

R 中各组的树状图的颜色分支(无 h 或 k 元素)

我想按数据框中定义的特定组对树状图的分​​支进行着色。

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)

r dendrogram graph-coloring factoextra

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

R hclust最终合并的高度

使用hclust函数在R中执行层次聚类时.你怎么知道最终合并的高度?

所以要澄清一些R默认数据:

hc <- hclust(dist(USArrests))
dendrogram1 = as.dendrogram(hc)
plot(hc)
Run Code Online (Sandbox Code Playgroud)

将导致具有所有聚类信息的变量hc.

R聚类输出

和树状图:

R树状图

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

变量树状图1

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

树形图R顶部合并

我问这个是因为我需要这个数字(+ - 300)用于其他应用程序,从图中读取它是非常不切实际的.

感谢任何愿意帮助的人!

r dendrogram hclust dendextend

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