2016-03-01 44 views
0

这里是一个重复的例子,ggplot2:如何只在一个方面删除一个级别?

set.seed(12) 
d = data.frame(
    x = rep(LETTERS[c(2,1,3,4)],each=30), 
    y=rnorm(120), 
    facet = c(rep("facet 1", 20), rep("facet 3", 10), rep(rep(paste("facet",1:3), each=10),3)) 
) 

require(ggplot2) 
ggplot(d,aes(x=x,y=y)) + geom_boxplot() + facet_grid(.~facet) 

enter image description here

正如你所看到的,在facet 2,对于x == "B"没有条目。

如何删除空白并仅为facet 2选择B

然后facet 2的横向宽度将是其他方面的3/4。

回答

2

必须设置两个,scales = "free_x"space = "free_x"

require(ggplot2) 
ggplot(d,aes(x=x,y=y)) + geom_boxplot() + 
    facet_grid(.~facet, scales = "free_x", space = "free_x") 

enter image description here

scales = "free_x"允许x轴切面之间不同。因此,在第二个方面,遗漏的等级将被省略。

space = "free_x"考虑到小平面的不同空间宽度。根据文档:

如果“free_x”它们的宽度将与x比例的长度成比例;

其中“它们的宽度”是指小平面的宽度。