ggplot2:如何仅在一个方面中删除一个级别?

时间:2016-03-01 19:36:55

标签: r ggplot2 facet

这是一个可重现的例子

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"没有条目。

如何删除空白区域并仅为B打勾facet 2

facet 2的水平宽度将是其他方面的水平宽度的3/4。

1 个答案:

答案 0 :(得分: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刻度的长度成正比;

其中"他们的宽度"指小平面的宽度。