Опасности выравнивания участков в ggplot

ВОПРОС

Как вы комбинируете отдельные графики (ggplot2) с разными осями Y и разной высотой, но сохраняете выравнивание?

ДЕТАЛЬ

При объединении участков сgrid.arrange (method1), с разными единицами оси Y они не выравниваются. Одним из способов решения этой проблемы является использованиеgtable (method2), но я не могу отрегулировать относительную высоту графиков.

ПРИМЕР

require(ggplot2)

#Make two plots, with different y axis
  x = c(1, 5)
  y= c(.1, .4)
  data1<-data.frame(x,y)
  top<-
    ggplot(data1, aes(x=x, y=y))+
    geom_line()

  x = c(1, 5)
  y= c(100000, 400000)
  data2<-data.frame(x,y)
  bottom<-
    ggplot(data2, aes(x=x, y=y))+
    geom_line()


# Method 1 - Grid Extra 
  require(gridExtra)
  grid.arrange(top, bottom, heights=c(.6,.3))

Метод 1 приводит к этому графику, который смещен из-за разной длины меток оси y:

#Method 2 - gtable
  require(gtable)
  #Extract Grobs
  g1<-ggplotGrob(top)
  g2<-ggplotGrob(bottom)
  #Bind the tables
  g<-gtable:::rbind_gtable(g1, g2, "first")
  #Remove a row between the plots
  g <- gtable_add_rows(g, unit(-1,"cm"), pos=nrow(g1))
  #draw
  grid.newpage()
  grid.draw(g)

Метод 2 приводит к выравниванию графиков, но я не могу отрегулировать высоту каждого графика.

СПАСИБО!

Ответы на вопрос(1)

Ваш ответ на вопрос