R 在镶嵌面_包装条文本中仅显示一个变量标签?

R 在镶嵌面_包装条文本中仅显示一个变量标签?,r,plot,ggplot2,facet,facet-wrap,R,Plot,Ggplot2,Facet,Facet Wrap,我正在使用R中的ggplot2包中的facet\u wrap()绘制多个图形。当通过多个变量进行镶嵌面时,结果将在条带文本中同时包含两个标签。我怎样才能删除一个 在这个来自mpg数据集的玩具示例中,如何仅保留cyl标签?谢谢 ggplot(mpg, aes(displ, hwy)) + geom_point() + facet_wrap(c("cyl", "drv")) 这方面最大的问题是@aelwan提到的几个地块将具有相同的条带标签,但不相同。忽略这个问题,我认为最好的方法是在cy

我正在使用
R
中的
ggplot2
包中的
facet\u wrap()
绘制多个图形。当通过多个变量进行镶嵌面时,结果将在条带文本中同时包含两个标签。我怎样才能删除一个

在这个来自
mpg
数据集的玩具示例中,如何仅保留
cyl
标签?谢谢

ggplot(mpg, aes(displ, hwy)) +
  geom_point() +
  facet_wrap(c("cyl", "drv"))

这方面最大的问题是@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)))
另一个(承认不是很好)改变它的方法如下(我怀疑有更好的方法):

库(ggplot2)
图书馆(ggExtra)
图书馆(网格)
图书馆(gtable)

gg也许你正在寻找类似
facet\u grid(cyl~drv)
的东西,而不是
facet\u wrap
。或者,因为我怀疑你不想要空的绘图,我建议你创建一个具有适当级别的新列
cyl\u drv
,然后你可以只做
facet\u wrap(~cyl\u drv)
。如果您使用
drv
,然后只保留
cyl
的标签,这是没有意义的。如果仅保持
cyl
,则将有多个具有标签8的面。您的绘图阅读器如何区分具有相同标签的几个面?或者,您可以通过drv为数据着色,并保留面的cyl
ggplot(mpg,aes(displat,hwy,color=drv))+geom_point()+facet_wrap(~cyl)
谢谢!是的,我理解双标题问题,但已用我的实际数据说明了这一点。有没有一种方法可以在不手动更改每个标签的情况下执行此操作?我在一个变量中有8个以上的因子(不总是相同的),在另一个变量中有2个因子,我想从漫画标题中删除2个因子变量,因为我有一个颜色aes来处理这些。
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)