如何控制显示哪些 facet_wrap 标签

Posted

技术标签:

【中文标题】如何控制显示哪些 facet_wrap 标签【英文标题】:How to control which facet_wrap labels are displayed 【发布时间】:2021-11-12 13:43:37 【问题描述】:

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

【问题讨论】:

相关:***.com/questions/54178285/… 和 ***.com/questions/45114850/… 【参考方案1】:

最简单的方法是调整 labeler 函数以仅提取第一个变量的标签。你可以这样做

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)))

【讨论】:

以上是关于如何控制显示哪些 facet_wrap 标签的主要内容,如果未能解决你的问题,请参考以下文章

在 ggplot/ggplotly 中使用 facet_wrap 时如何防止 y 轴挤压标签?

如何控制 `facet_wrap()` 中的轴刻度数?

在 R 中使用带有 facet_wrap 的 ggplot2 显示多个轴标签

如何在一个facet_wrap面板中排斥文本?

ggplot2中facet_wrap( )的高阶用法

在 R 中自定义 facet_wrap 绘图标签?