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为数据着色,并保留面的cylggplot(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)