thomasp85 / patchwork

The Composer of ggplots
https://patchwork.data-imaginist.com
Other
2.42k stars 157 forks source link

patchwork will get subscript out of bounds when using y axis on the right #340

Closed smouksassi closed 6 months ago

smouksassi commented 7 months ago
library(ggplot2)
library(patchwork)
library(egg)
#> Loading required package: gridExtra
p1 <- ggplot(mtcars) + geom_point(aes(mpg, disp)) +
  facet_grid(cyl~ vs,scales="free",switch="both",space = "free_x")+
  theme(strip.placement = "outside",
        axis.title.y.left = element_blank(),
        axis.title.x = element_blank(),
        strip.text.y.left = element_text(angle=0)) 
p2 <- ggplot(mtcars) + geom_boxplot(aes(gear, disp, group = gear))+
  facet_grid(cyl~ vs,scales="free",switch="both",space = "free_x")+
  scale_y_continuous( position = "left")+
  theme(strip.placement = "outside",
        axis.title.y.left = element_blank(),
        axis.title.x = element_blank(),
        strip.text.y.left = element_blank()) 

p1 + p2


p1 +(p2+ scale_y_continuous( position = "right"))
#> Scale for y is already present.
#> Adding another scale for y, which will replace the existing scale.
#> Error in FUN(X[[i]], ...): subscript out of bounds

egg::ggarrange(p1 ,(p2+ scale_y_continuous( position = "right"))
, ncol =2)
#> Scale for y is already present.
#> Adding another scale for y, which will replace the existing scale.

workaround is to use egg ggarrange

Created on 2023-11-30 with reprex v2.0.2

LukasWallrich commented 7 months ago

(Deleted my comment as the similar faceting issue is fixed in the current version - this issue still occurs, though)