如何控制显示哪些 facet_wrap 个标签

How to control which facet_wrap labels are displayed

在下面使用 facet_wrap 时,yearmodel 都显示在绘图标签中。

library(tidyverse)
mpg %>%
  filter(manufacturer=='audi')%>%
  ggplot(aes(cty, hwy)) + 
  geom_point(aes(col = model)) +
  facet_wrap(year~model)

我们已经用 model 给点上色了,它显示在图例中,所以我们真的不需要在每个方面标签中使用 model。我们如何从标签中删除 model

最简单的方法是调整标签功能,只提取第一个变量的标签。你可以用

mpg %>%
  filter(manufacturer=='audi')%>%
  ggplot(aes(cty, hwy)) + 
  geom_point(aes(col = model)) +
  facet_wrap(~year+model, labeller=function(x) {x[1]})

另一种方法是创建一个交互变量,这样您就可以只在一个变量上分面,然后您可以更改标签器以去除第二个值的名称。看起来像这样

mpg %>%
  filter(manufacturer=='audi')%>%
  ggplot(aes(cty, hwy)) + 
  geom_point(aes(col = model)) +
  facet_wrap(~interaction(year,model), labeller=as_labeller(function(x) gsub("\..*$", "", x)))