Выравнивание и расположение диаграмм в ggplot

У меня есть два графика в ggplot с одинаковыми диапазонами на оси, которые я хотел бы выровнять.

С помощью:

library(grid)
grid.newpage()
grid.draw(rbind(ggplotGrob(g1), ggplotGrob(g2), size = "last"))

гдеsize='last' гарантирует, что сетки выровнены по x, я получаю макет, такой как этот:

Верхняя диаграмма имеет чрезмерный вертикальный диапазон для простой строки, которую я хочу изобразить.

Я хотел бы, чтобы изображение более соответствовало следующему:

Или, альтернативно, с диаграммой g1, выровненной ниже оси диаграммы g2. (Для простоты, скажем, я хочу иметь возможность выбрать или даже наложить g1 поверх g2.

(Моя исходная модель представляла собой одну диаграмму с компонентом g1, просто установленным в качестве слоя на диаграмме g2 с y = 0; однако диаграмма слишком загромождена, чтобы читать с этим макетом, поэтому я подумал, что должен переместить исходный y = 0 элементы в отдельную панель (т.е. G1).

Минимальный пример:

size=50
df1=data.frame(x=seq(1,size),y=sample(-100:100,size,rep=TRUE))
df2=data.frame(x=seq(1,size),r=replicate(size,paste(sample(c(letters, LETTERS),3),collapse='')))
g1=ggplot(df1)+geom_point(aes(x=x,y=y))
g2=ggplot(df2)+geom_text(aes(x=x,y=0,label=r),angle=45,size=2)
library(grid) 
grid.newpage()
grid.draw(rbind(ggplotGrob(g1), ggplotGrob(g2), size = "last"))

Я хочу, чтобы полоса меток (g2) была аккуратно расположена относительно диаграммы рассеяния. Полоса g2 была частью оригинального графика какgeom_text() элемент вy=0 но там был слишком загроможден график, на котором тоже были размещены ярлыки.

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

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