2017-08-23 61 views
3

我需要使用ggplot2绘制聚类树形图。要创建树状图对象,我使用dendextend包中的as.ggdend()函数。但是,叶子和标签之间的空间非常小(请参见下图)。任何想法如何增加它?在ggplot2树形图中增加叶子和标签之间的空间

enter image description here

再现例子的代码如下粘贴。

library(ggplot2) 
library(dendextend) 

## Sample 20 instances of iris dataset 
data(iris) 
df <- iris[sample(150, 20), -5] 
labs <- paste("Longname_", 1:20, sep = "") 
rownames(df) <- labs 

## Create dendrogram object 
dend <- df %>% dist %>% 
    hclust %>% as.dendrogram %>% 
    set("labels_cex", 1) 
ggd1 <- as.ggdend(dend) 

## Plot dendrogram 
ggplot(ggd1, horiz = TRUE) 
+2

作为每[文档】(https://cran.r-project.org/web/packages/dendextend/vignettes/introduction.html)dendextend'包的'那里,没有实现改变叶子之间的空间。 Tal Galili参考这个答案[这里](https://stackoverflow.com/questions/26965390/larger-font-and-spacing-between-leaves-in-r-dendrogram)。我认为你的最佳解决方案可能是'dend <- df %>%dist%>% hclust%>%as.dendrogram%>% set(“labels_cex”,1)%>% #挂起树叶(在某个高度) hang.dendrogram(hang_height = .7)' – Ashish

回答

1

在我看来,处理您的情节的宽度和高度可以是一个简单而有价值的解决方案,为您的问题。

library(ggplot2) 
library(dendextend) 
data(iris) 
df <- iris[sample(150, 20), -5] 

## Add blanks before "Longname_" 
labs <- paste(" Longname_", 1:20, sep = "") 
rownames(df) <- labs 

dend <- df %>% dist %>% 
    hclust %>% as.dendrogram %>% 
    set("labels_cex", 1) 
ggd1 <- as.ggdend(dend) 

## Resize width and height plotting area 
x11(width=10, height=5) 
ggplot(ggd1, horiz = TRUE) 

enter image description here

相关问题