Как я уже говорил в комментариях, я думаю, что это связано с расстоянием между вашими гранями как результат 2 на 5 графиков + разница в метках оси Y. Я могу ошибаться (что весьма вероятно), поэтому может быть более простое / красивое решение. Опять же, это предложение, вы можете немного поиграться с числами, но я подумал, что это довольно близко:
# Create two facetted plots
p1 <- ggplot(data = diamonds, aes(x = carat, y = price)) +
facet_wrap(~ cut, scales = "free_y", ncol = 5) +
geom_point(size=0.5)
p2<- ggplot(data = filter(diamonds, price < 900 & (cut == "Fair" | cut == "Good" )), aes(x = carat, y = price)) +
facet_wrap(~ cut, scales = "free_y", ncol = 2) +
geom_point(size=0.5) +
theme(panel.spacing = unit(1.15, "lines"),
axis.title.y = element_text(margin = margin(t = 0, r = 5, b = 0, l = 0)))
# Create panel A and panel B
a <- plot_grid(NULL, p2, labels = c("A", "B"), axis = 'lb', ncol = 2, rel_widths = c(2.985,2.015))
# Create a combined panel of 'a' and panel C
plot_grid(a, p1, labels = c("", "C"), axis = 'lb', ncol = 1, rel_heights = c(1,1))
Так что в основном то, что я добавил, это еще один интервал между вашими графиками p2, так как числа на нижних графиках занимают больше места, чем на верхних (в конце концов, есть еще 2 числа). Для меня это исправило выравнивание двух сюжетов с правой стороны. Я также увеличил поле надписи до оси. Это исправило выравнивание для левого верхнего графика. Я не уверен, желательно ли изменить расстояние между меткой и осью.