如何在ggplot2中添加通用标签?

我经常有数值分面。 我希望提供足够的信息来解释补充标题中的这些分面值,类似于轴标题。 标签选项重复了许多不必要的文本,并且对较长的variables标题不可用。

有什么build议么?

默认值:

test<-data.frame(x=1:20, y=21:40, facet.a=rep(c(1,2),10), facet.b=rep(c(1,2), each=20)) qplot(data=test, x=x, y=y, facets=facet.b~facet.a) 

在这里输入图像说明

我会喜欢什么:

在这里输入图像说明

我能做的最好的ggplot:

 qplot(data=test, x=x, y=y)+facet_grid(facet.b~facet.a, labeller=label_both) 

在这里输入图像说明

如@ Hendy所示,类似于: 为ggplot2图添加第二个y轴 – 使之完美

由于最新的ggplot2 gtable内部使用gtable ,所以修改一个数字是很容易的:

 library(ggplot2) test <- data.frame(x=1:20, y=21:40, facet.a=rep(c(1,2),10), facet.b=rep(c(1,2), each=20)) p <- qplot(data=test, x=x, y=y, facets=facet.b~facet.a) # get gtable object z <- ggplotGrob(p) library(grid) library(gtable) # add label for right strip z <- gtable_add_cols(z, unit(z$widths[[7]], 'cm'), 7) z <- gtable_add_grob(z, list(rectGrob(gp = gpar(col = NA, fill = gray(0.5))), textGrob("Variable 1", rot = -90, gp = gpar(col = gray(1)))), 4, 8, 6, name = paste(runif(2))) # add label for top strip z <- gtable_add_rows(z, unit(z$heights[[3]], 'cm'), 2) z <- gtable_add_grob(z, list(rectGrob(gp = gpar(col = NA, fill = gray(0.5))), textGrob("Variable 2", gp = gpar(col = gray(1)))), 3, 4, 3, 6, name = paste(runif(2))) # add margins z <- gtable_add_cols(z, unit(1/8, "line"), 7) z <- gtable_add_rows(z, unit(1/8, "line"), 3) # draw it grid.newpage() grid.draw(z) 

在这里输入图像说明

当然,您可以编写一个自动添加条形标签的function。 未来版本的ggplot2可能有这个function; 不知道。

除了kohske概述的方法之外,您还可以通过更改添加边框到添加的框中

 col=NA 

 col=gray(0.5), linetype=1 

另外,改变

 fill=gray(0.5) 

对于

 fill=grey(0.8) 

 gp=gpar(col=gray(1)) 

 gp=gpar(col=gray(0)) 

如果你想新的酒吧匹配facet标签

 z <- gtable_add_grob(z, list(rectGrob(gp = gpar(col = gray(0.5), linetype=1, fill = gray(0.8))), textGrob("Variable 1", rot = -90, gp = gpar(col = gray(0)))), 4, 8, 6, name = paste(runif(2)))