Gráficos marginales usando axis_canvas en cowplot: cómo insertar un espacio entre el panel principal y los gráficos marginales

Lo siguiente surgió en un comentario paraesta publicación: Al hacer tramas marginales con elaxis_canvas() ¿Cómo podemos crear una brecha entre la trama principal y la parcela marginal?

Código de ejemplo:

require(cowplot)

pmain <- ggplot(data = mpg, aes(x = cty, y = hwy, color = factor(cyl))) + 
  geom_point() + 
  xlab("City driving (miles/gallon)") +
  ylab("Highway driving (miles/gallon)") +
  theme_minimal()

xbox <- axis_canvas(pmain, axis = "x", coord_flip = TRUE) + 
  geom_boxplot(data = mpg, aes(y = cty, x = factor(cyl), color = factor(cyl))) + 
  scale_x_discrete() + coord_flip()
ybox <- axis_canvas(pmain, axis = "y") + 
  geom_boxplot(data = mpg, aes(y = hwy, x = factor(cyl), color = factor(cyl))) +
  scale_x_discrete()

p1 <- insert_xaxis_grob(pmain, xbox, grid::unit(0.6, "in"), position = "top")
p2 <- insert_yaxis_grob(p1, ybox, grid::unit(0.6, "in"), position = "right")
ggdraw(p2)

Como podemos ver en este ejemplo, los diagramas de caja marginales tocan directamente el panel de diagrama principal. El objetivo es generar cierta brecha. ¿Cómo se puede hacer esto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta