Используя набор данных экономики, о котором другие упоминали, может быть хорошим решением baseR.
layout(matrix(1:2, ncol = 1), widths = 1, heights = c(2,1.5), respect = FALSE)
par(mar = c(0, 4.1, 4.1, 2.1))
with(economics, plot(unemploy~date, type = 'l', xaxt = 'n', main = 'My Great Graph'))
par(mar = c(4.1, 4.1, 0, 2.1))
with(economics, plot(pop~date, type = 'l'))
Вы заметите, что вам вообще не нужно изменять форму данных, поскольку вы явно строите два графика, а не используете функцию, в которой данные разбиты по фактору. Кроме того, эти два графика могут быть почти чем угодно ... как второй может быть гистограммой. Кроме того, вы заметите, что в этом коде вы можете легко установить относительную высоту по своему усмотрению.
(этот код выполняется намного быстрее, чем решение ggplot2 ... в случае, если это имеет значение ... например, обновление на веб-сайте или что-то в этом роде, или у вас много данных, или вам нужно создать много таких графиков) 1009 *