Выравнивание и расположение диаграмм в 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
но там был слишком загроможден график, на котором тоже были размещены ярлыки.