这个最大的问题是@aelwan提到的几个地块将有相同带标签,但也不尽相同。忽略此问题,我相信最好的方法是在cyl
和drv
之间创建一个新的交叉变量。
所以,如果你只是想要一个排为带标签就可以,例如:
ggplot(mpg %>% mutate(cyl_drv = paste0(cyl, '-', drv)), aes(displ, hwy)) +
geom_point() +
facet_wrap(~ cyl_drv)
然后,您可以更改标签,如果你需要如下:
ggplot(mpg %>% mutate(cyl_drv = paste0(cyl, '-', drv)), aes(displ, hwy)) +
geom_point() +
facet_wrap(~ cyl_drv, labeller = as_labeller(c(`4-4`="4", `4-f`="4", `5-f`=5, `6-4`=6, `6-f`=6, `6-r`=6, `8-4`=8, `8-f`=8, `8-r`=8)))
另一个(当然不很好)的方式来改变它如下(我怀疑有一个更好的办法):
library(ggplot2)
library(ggExtra)
library(grid)
library(gtable)
gg <- ggplot(mpg, aes(displ, hwy)) +
geom_point() +
facet_wrap(~ cyl * drv)
g1 <- ggplot(mpg, aes(displ, hwy)) +
geom_point() +
facet_wrap(~ cyl)
gtab <- ggplotGrob(gg)
gtab$grobs[[47]] <- ggplotGrob(g1)$grobs[[23]]
gtab$grobs[[48]] <- ggplotGrob(g1)$grobs[[23]]
gtab$grobs[[49]] <- ggplotGrob(g1)$grobs[[23]]
gtab$grobs[[50]] <- ggplotGrob(g1)$grobs[[22]]
gtab$grobs[[51]] <- ggplotGrob(g1)$grobs[[22]]
gtab$grobs[[52]] <- ggplotGrob(g1)$grobs[[22]]
gtab$grobs[[53]] <- ggplotGrob(g1)$grobs[[24]]
gtab$grobs[[54]] <- ggplotGrob(g1)$grobs[[24]]
gtab$grobs[[55]] <- ggplotGrob(g1)$grobs[[25]]
grid.draw(gtab)
也许你看起来ng代表'facet_grid(cyl〜drv)'而不是'facet_wrap'。 – student
另外,因为我怀疑你不想要空的地块,所以我建议你用适当的级别创建一个新的列“cyl_drv”,然后你可以做'facet_wrap(〜cyl_drv)'。 – student
如果你使用'drv',然后只保留'cyl'的标签,这是没有意义的。如果你只保留'cyl',你将会有几个有标签8的方面。你的情节的读者如何区分具有相同标签的几个方面? – aelwan