Я пытаюсь написать функцию, которая отображает график ggplot facet_wrap
на нескольких страницах. Это просто взломать, поскольку эта функция, похоже, находится в списке функций ggplot2. Я делаю небольшие вычисления, чтобы найти количество страниц, которые мне нужны, количество строк моего data.frame
, которые мне нужны на странице и т. Д. Я уверен, что все это работает.R + ggplot: отображение нескольких страниц
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 является блестящий.
Есть ли способ, которым я могу заставить цикл for дождаться окончания окончательной строки, прежде чем перейти к следующей итерации?
wow, который полностью работает. Я понятия не имел, что печать может быть использована так. –
Это потому, что 'p' является объектом. Последняя строка вашего кода изменяет объект 'p', но затем вы хотите' print() 'it на устройство. – JoFrhwld
Да, это общее препятствие. Иногда я пишу функцию в ggplot2 и опускаю 'print()' вокруг финальной части, поэтому не получаю никакого вывода ... – aL3xa