Печать на нескольких страницах - PullRequest
25 голосов
/ 03 августа 2010

Я пытаюсь написать функцию, которая строит график 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()

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

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

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

Ответы [ 2 ]

31 голосов
/ 03 августа 2010

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

5 голосов
/ 04 августа 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...