[英]Labelling circular dendextend dendrogram
我正在尝试绘制组成数据的圆形树状图。 使用以下代码:
library(dendextend)
library(circlize)
library(compositions)
data("Hydrochem")
hydro<-Hydrochem
d <- dist(hydro[7:19], method="euclidean")
hc <- hclust(d, method = "average")
dend <- as.dendrogram(hc)
hydro$River <- as.character(hydro$River)
labels(dend) <- hydro$River[order.dendrogram(dend)]
plot(dend)
使用正确的标签顺序,我可以获得所需的普通树状图。
但是当我运行circlize_dendrogram(dend)
,我得到了:
使我感到困扰的是中间的树状图-当我不对标签使用树状图的顺序时(即,仅键入labels(dend) <- hydro$River
),内部树状图就很好,而且一切看起来都不错。
我尝试将labels_track_height
和dend_track_height
设置更改为无济于事,并且当我在较小的玩具数据集上运行相同的过程时,不会出现此问题。
有任何想法吗?
因此,在代码中实际上存在两个问题:1.标签不是唯一的。 2.在树状图对象中更新标签后,绘图无法为标签留出足够的空间
第一个问题可以通过将数字添加到您提供的非唯一标签来解决,从而使它们唯一。 第二个问题的解决方案是在circlize_dendrogram函数中使用circlize_dendrogram
参数。 这是更新的代码(注意最后一行,不同之处是):
library(dendextend)
library(circlize)
library(compositions)
data("Hydrochem")
hydro<-Hydrochem
d <- dist(hydro[7:19], method="euclidean")
hc <- hclust(d, method = "average")
dend <- as.dendrogram(hc)
tmp <- as.character(hydro$River)[order.dendrogram(dend)]
labels(dend) <- paste0(seq_along(tmp), "_", tmp)
plot(dend)
circlize_dendrogram(dend, labels_track_height = 0.4)
您得到的输出是这样的:
(现在这已在dextextend 1.6.0中自动完成,当前在github上可用-稍后也在CRAN上提供)
因此,解决此问题的方法(如果有人可以提供更多详细信息,请这样做,因为我根本不明白为什么这很重要),是在定义标签后添加第二个dend <- as.dendrogram(hc)
调用。 因此,代码如下所示:
d <- dist(hydro[7:19], method="euclidean")
hc <- hclust(d, method = "average")
dend <- as.dendrogram(hc)
hydro$River <- as.character(hydro$River)
labels(dend) <- hydro$River[order.dendrogram(dend)]
dend <- as.dendrogram(hc)
circlize_dendrogram(dend)
另一个用户的提示:这不能解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.