Как выровнять заголовки оси Y на сложных ggplots, выровненных по функциям яйца - PullRequest
0 голосов
/ 03 июня 2019

Я хочу сделать фигуру с сеткой графиков, все одинаковой высоты, но некоторые с половиной ширины других.Я успешно использовал gtable_frame и gtable_cbind пакета egg, но осталась одна проблема: тексты по оси y имеют разные цифры на разных графиках, и мне не удается выровнять заголовки по оси y по прямой вертикальной линии.По сути, мой вопрос прямо противоположен этому ( cowplot: заголовок оси принудительно выравнивается при выравнивании двух графиков )

Я пытался играть с размерами полей и объемами заголовков безsuccess.

Вот воспроизводимый пример:

library(ggplot2)
library(egg)
library(cowplot)
library(gridExtra)
library(grid)

p1 <- ggplot(mtcars, aes(cyl, hp, colour = factor(cyl))) +
  geom_point() +
  theme(legend.position="none")
p2 <- ggplot(mtcars, aes(mpg, cyl, colour = factor(cyl))) +
  geom_point() +
  theme(legend.position="none")
p3 <- ggplot(mtcars, aes(mpg, wt, colour = factor(cyl))) +
  geom_line() +
  theme(legend.position="none")

g1 <- ggplotGrob(p1)
g2 <- ggplotGrob(p2)
g3 <- ggplotGrob(p3)

fg1 <- gtable_frame(g1, debug = TRUE)
fg2 <- gtable_frame(g2, debug = TRUE)
fg12 <- gtable_frame(gtable_cbind(fg1, fg2),
               width = unit(2, "null"),
               height = unit(1, "null"))
fg3 <- gtable_frame(g3,
    width = unit(2, "null"),
    height = unit(1, "null"),
    debug = TRUE)

grid.newpage()
line1 <- gtable_cbind(fg1, fg1)
line2 <- gtable_cbind(fg12, fg3)
line3 <- gtable_cbind(fg3, fg12)
combined <- gtable_rbind(line1, line2, line3)
grid.draw(plot_grid(combined))

the graph

Я хотел бы названия "wt" и "hp"чтобы быть на одной линии.Спасибо за вашу помощь!

...