在 ggplot2 中使用“facet_wrap”时在一些图周围画一个框

Draw a box around some of the plots when using `facet_wrap` in ggplot2

我使用 ggplot() 创建了以下带有面板的图:

ggplot(merged.table, aes(x=iter, y=freq,group=var)) + geom_line()+facet_wrap(.~var)

我想在一些地块周围画一个方框,这些地块的编号在向量中被识别 trueplots:

trueplots<-sample(1:25,5)

我按照程序 尝试了

ggplot(merged.table, mapping=aes(x=iter, y=freq,group=var)) + geom_line()+geom_rect(subset(merged.table, var %in% trueplots),fill = NA, colour = "red", )+facet_wrap(.~var)

ggplot(merged.table, mapping=aes(x=iter, y=freq,group=var)) + geom_line()+geom_rect(subset(merged.table, var %in% trueplots),fill = NA, colour = "red", xmin= -Inf,xmax = Inf,ymin = -Inf,ymax = Inf)+facet_wrap(.~var)

但我收到错误

Error: `mapping` must be created by `aes()`

有什么提示吗?谢谢!

我想你只是忘了把映射放在 aes() 里面,它似乎在 geom_rect() 参数列表中的位置错误(映射是第一个参数,而不是数据)。

标准数据集示例:

library(ggplot2)

df <- mtcars
df$facet <- interaction(df$cyl, df$carb, drop = TRUE)

trueplots <- sample(levels(df$facet), 5)

ggplot(df, aes(disp, hp)) +
  geom_point() + 
  geom_rect(aes(xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf),
            data = ~ subset(., facet %in% trueplots), 
            colour = "black", fill = NA, inherit.aes = FALSE) +
  facet_wrap(~ facet)

reprex package (v0.3.0)

于 2021-01-27 创建