2016-10-04 123 views
2

我想通过使用ggplot2创建一个漂亮的树状图。ggplot2上的轴上的颜色轴标签或绘制矩形

这是我在做什么重复的例子:

library(ggplot2) 
library(ggdendro) 
data(mtcars) 
x <- as.matrix(scale(mtcars)) 
dd.row <- as.dendrogram(hclust(dist(t(x)))) 

mtcars_dendrogram <- ggdendrogram(dd.row, rotate = TRUE, theme_dendro = FALSE) + 
    labs(x="", y="Distance") + 
    ggtitle("Mtcars Dendrogram") + 
    theme(panel.border = element_rect(colour = "black", fill=NA, size=.5), 
     axis.text.x=element_text(colour="black", size = 10), 
     axis.text.y=element_text(colour="black", size = 10), 
     legend.key=element_rect(fill="white", colour="white"), 
     legend.position="bottom", legend.direction="horizontal", 
     legend.title = element_blank(), 
     panel.grid.major = element_line(colour = "#d3d3d3"), 
     panel.grid.minor = element_blank(), 
     panel.border = element_blank(), 
     panel.background = element_blank(), 
     plot.title = element_text(size = 14, family = "Tahoma", face = "bold"), 
     text=element_text(family="Tahoma")) 
mtcars_dendrogram <- mtcars_dendrogram + 
    annotate("rect", xmin = 0.6, xmax = 5.4, ymin = 0, ymax = 6.4, fill="red", colour="red", alpha=0.1) + 
    annotate("rect", xmin = 5.6, xmax = 7.4, ymin = 0, ymax = 6.4, fill="blue", colour="blue", alpha=0.1) + 
    annotate("rect", xmin = 7.6, xmax = 11.4, ymin = 0, ymax = 6.4, fill="orange", colour="orange", alpha=0.1) + 
    geom_hline(yintercept = 6.4, color = "blue", size=1, linetype = "dotted") 
mtcars_dendrogram 

这是结果

mtcars_dendrogram

我想扩展矩形,以便它涵盖x轴。如果我改变,例如,

annotate("rect", xmin = 5.6, xmax = 7.4, ymin = 0, ymax = 6.4, fill="blue", colour="blue", alpha=0.1) 

annotate("rect", xmin = 5.6, xmax = 7.4, ymin = -1, ymax = 6.4, fill="blue", colour="blue", alpha=0.1) 

然后我得到这个

mtcars_dendrogram_2

这是我想获得(这一结果与Photoshop改变)什么

mtcars_dendrogram_3

任何帮助非常欢迎。非常感谢。

回答

1

您可以伪造的左轴:

mtcars_dendrogram <- mtcars_dendrogram + 
annotate("rect", xmin = 0.6, xmax = 5.4, ymin = -1, ymax = 6.4, fill="red", colour="red", alpha=0.1) + 
    annotate("rect", xmin = 5.6, xmax = 7.4, ymin = -1, ymax = 6.4, fill="blue", colour="blue", alpha=0.1) + 
    annotate("rect", xmin = 7.6, xmax = 11.4, ymin = -1, ymax = 6.4, fill="orange", colour="orange", alpha=0.1) + 
    geom_hline(yintercept = 6.4, color = "blue", size=1, linetype = "dotted") + 
    theme(axis.text.y = element_blank(), 
     axis.line.y = element_blank(), 
     axis.ticks.y = element_blank()) + 
    geom_text(aes(y = 0, x = 1:11, 
       label = c("carb", "wt", "hp", "cyl", "disp", "qsec", "vs", "mpg", "drat", "am", "gear")), 
      hjust = "right", 
      nudge_y = -.1)) 

enter image description here