Почему facet_grid работает, но не facet_wrap?

Я хотел бы использовать огранку, но и контролировать количество строк и столбцов. Поэтому facet_wrap предпочитает facet_grid. Но в то время как facet_grid работает, facet_wrap не делает и дает ошибку: "По крайней мере, один слой должен содержать все переменные, используемые для фасетирования". Почему это происходит? Как я могу использовать facet_wrap здесь?

x <- rnorm(8)
y <- x + rnorm(8, sd=0.7)
dd <- data.frame(id=rep(1:4, 2), x=x, y=y)
pp <- ggplot(dd, aes(x, y)) + geom_point()
pp  
pp + facet_grid(. ~ id)  # works
pp + facet_wrap(. ~ id)  # error

Ответы

Ответ 1

Отбросьте . в facet_wrap, потому что формула односторонняя:

pp + facet_wrap(~ id)