【发布时间】:2021-07-16 20:49:08
【问题描述】:
我已经使用 dendextend 包的 set("by_labels_branches_col") 函数建立了一个树状图并根据它们的“纯度”(它们是否只包括因子变量中具有特定值的主题)为其分支着色。现在,我想将此树状图转换为 ggplot2 对象以进行进一步定制。我已经能够使用 as.ggdend 函数(也来自 dendextend 包)来做到这一点。这是我遇到2个问题的时候 我需要一些帮助:
1-使用 as.ggdend 后,生成的对象“丢失”指示树状图高度的垂直轴...如何在不丢失轴的情况下进行此转换?
2.-我还尝试通过使用 dendextend 包的 colour_bars 函数添加一个彩色条来丰富我的树状图。但是,我不知道如何保存生成的对象以将其转换为 ggplot 对象。
这里我提供了一个使用 mtcars 数据集的代码示例
df=mtcars
ds=dist(df, "euclidean")
hc<-hclust(ds,method= "average")
de=as.dendrogram(hc)
library(dendextend)
code=rownames(df[df$cyl==4,])#factor for coloring
de2<-de%>%set("by_labels_branches_col", value = c(code))%>% set("labels", "")%>%as.dendrogram(de)#coloring branches
#to add the colored bar
colores<-c("red","black", "blue") [as.factor(df$cyl)]
plot(de2)
colored_bars(colors=colores,dend=de2, y_shift=-2, rowLabels="" )
#transform to ggplot
de3=as.ggdend(de2)
提前感谢任何可能的答案
【问题讨论】:
-
如果
df派生自mtcars数据集(根据一些变量名判断),您能否在代码示例中添加您是如何从mtcars派生df的?这将使代码可重现并且更容易解决问题。如果它不是从标准数据集派生的,您能否包含一些允许我们重现问题的虚拟数据? -
Teunbrad:感谢您的评论。我没有意识到我省略了第一行代码。现在改正了。
标签: r ggplot2 dendrogram dendextend