Это проблема отсечения. plot_grid()
использует ggplot для рисования сетки, и ggplot обрезает содержимое, которое выходит за пределы панели графика. Ваше обрезанное письмо частично находится за пределами графической панели:
p1 <- ggdraw() + theme(plot.background = element_rect(fill = "#FF000080", color = NA))
p2 <- ggdraw() + theme(plot.background = element_rect(fill = "#00FF0080", color = NA))
p3 <- ggdraw() + theme(plot.background = element_rect(fill = "#0000FF80", color = NA))
row <- plot_grid(p1, p2, nrow=2, rel_heights = c(0.4, 0.6),
labels=c("b", "c"), hjust=c(-5,-0.5), vjust=c(0.5,0))
plot_grid(p3, row, nrow=2, rel_heights = c(0.33, 0.66))
![enter image description here](https://i.stack.imgur.com/0yC8K.png)
Одним из решений является отключение этого отсечения:
row_grob <- ggplotGrob(row)
index <- grep("panel", row_grob$layout$name)
row_grob$layout$clip[index] = "off"
plot_grid(p3, row_grob,
nrow=2, rel_heights = c(0.33, 0.66))
![enter image description here](https://i.stack.imgur.com/wOATf.png)
В качестве альтернативы вы можете нарисовать метки после того, как соберете всю сетку, используя draw_label()
.