這個最大的問題是@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