1

好的,所以我确定以前有人问过这个问题,但是经过数小时的搜索后,我在任何地方都找不到好的答案。

我有一些数据,我进行分类,然后制作树状图。

问题与美学有关,特别是;(1)如何根据组的数量进行切割(在这个例子中我想要3个),(2)使组标签与树的分支对齐,(2)重新缩放以便没有任何巨大组间差距

更多关于 (3)。我的数据集物种非常丰富,大约有 1000 个组没有切割。如果我在 3 处切割,这棵树的右侧有一些树枝,右侧有一“英里”,我想重新缩放以使其更接近。所有这一切都可以通过外部程序实现,但我想在 r 中完成这一切!

  1. 如果您可以将平均轮廓宽度图嵌套在该图的右上角,则可以加分

这是使用虹膜数据的示例

library(ggplot2)
data(iris)
df = data.frame(iris)
df$Species = NULL

ED10 = vegdist(df,method="euclidean")
EucWard_10 = hclust(ED10,method="ward.D2")
hcd_ward10 = as.dendrogram(EucWard_10)

plot(hcd_ward10)
plot(cut(hcd_ward10, h = 10)$upper, main = "Upper tree of cut at h=75")
4

1 回答 1

1

我怀疑你想看的是dendextend R 包(它也有一篇关于生物信息学的论文)。

我不确定您关于 (3) 的问题,因为我不确定我是否理解重新缩放的含义。我可以告诉你的是,你可以做很多的dendextend。这是为 3 个组着色分支和标签的快速示例。

library(ggplot2)
library(vegan)
data(iris)
df = data.frame(iris)
df$Species = NULL

library(vegan)
ED10 = vegdist(df,method="euclidean")
EucWard_10 = hclust(ED10,method="ward.D2")
hcd_ward10 = as.dendrogram(EucWard_10)

plot(hcd_ward10)

install.packages("dendextend")
library(dendextend)
dend <- hcd_ward10
dend <- color_branches(dend, k = 3)
dend <- color_labels(dend, k = 3)
plot(dend)

在此处输入图像描述

您还可以使用 plotly 获得交互式树状图(ggplot 方法可通过 dendextend 获得):

library(plotly)
library(ggplot2)
p <- ggplot(dend)
ggplotly(p)

在此处输入图像描述

于 2016-12-12T20:31:19.567 回答