Графическое изображение по нескольким страницам

Я пытаюсь записать функцию, которая выводит ggplot на печать facet_wrap выведитесь на печать по нескольким страницам. Это - просто взлом, поскольку эта функция, кажется, находится в ggplot2 списке ожидающих выполнения задач функции. Я делаю некоторые маленькие вычисления для нахождения числа страниц, в которых я испытываю необходимость, количество строк моего data.frame то, что мне нужно на страницу и т.д. Я довольно уверен это все работы.

pdf(filename)
for (i in seq(num_pages)){
    slice = seq(((i-1)*num_rows)+1,(i*num_rows))
    slice = slice[!(slice > nrow(df.merged))]
    df.segment=df.merged[slice,]
    p <- ggplot(df.segment, aes(y=mean,x=phenotype))
    p <- p + geom_bar(stat="identity",fill="white",colour="black") 
    p + facet_wrap("ID",scales="free_y",ncol=n_facets,nrow=n_facets)
}
dev.off()

Моя проблема состоит в том что, путем оборачивания всего этого в для цикла как это, промежуточное pdf() и dev.off() функции, то, что для цикла, кажется, не ожидает ggplot, чтобы сделать его вещь и пламя через его цикл очень быстро и производит недопустимый PDF.

Если я установил i = 1, запустите pdf(), выполните вышеупомянутый код в для цикла, затем установите i=2, затем выполните код, и так далее пока я не буду скучать (i=3) затем выключите устройство, получающийся PDF является блестящим.

Существует ли способ, которым я могу добраться, чтобы цикл ожидал заключительной строки, чтобы закончить выводиться на печать прежде, чем перейти на следующее повторение?

25
задан Konrad Rudolph 21 February 2019 в 15:29
поделиться

2 ответа

Я думаю, проблема в том, что вам нужно print () вокруг вашей последней строки (p + ...), чтобы заставить ее печатать на устройство внутри цикла for. . .

31
ответ дан 28 November 2019 в 21:27
поделиться

Exactly. Страница 39 книги ggplot2 говорит нам, что когда вы создаете объекты ggplot2, вы можете "Вывести его на экран с помощью print(). Это происходит автоматически при интерактивном выполнении, но внутри цикла или функции вам придется выводить print() самостоятельно".

5
ответ дан 28 November 2019 в 21:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: