Я создаю несколько тепловых карт, используя forloop, и на каждой итерации я хочу создать PDF, используя dev.copy2pdf.Когда я отказываюсь от цикла for и просто копирую и вставляю каждую итерацию за другой, тогда код работает просто отлично (каждая тепловая карта составляет около 600 КБ. Но если я использую цикл for, я получаю пустые pdfs.
Iдумаю, это потому, что цикл for не дает dev.copy2pdf достаточно времени для генерации графиков, или, может быть, это связано с чем-то другим ...
Какое решение этой проблемы?
Вот мой код:
# specify where you want to deposit the pdf of the graphs
graphpath =
attmeasures = c('c','d')
for (inv in c('a','b')) {
for (m in 1:length(attmeasures)) {
plot.new()
x11()
xvar<- seq(1,36,1)
yvar<- seq(1,12000,1)
intensityvar<-expand.grid(yrmth=xvar, cid=yvar)
intensityvar$intvar = sample(1:100,length(xvar)*length(yvar),replace=T)
graphtitle = paste0('heatmap', attmeasures[m], inv, sep='')
intensityvar_heat<- ggplot(intensityvar, aes(yrmth, cid, z= intvar)) +
geom_tile(aes(fill = intvar)) + theme_bw() +
scale_fill_gradient2(low="yellow", mid="seagreen3", high="blue4",
midpoint = 50,
guide="colourbar",na.value="white", name = paste("monthly ", attmeasures[m], sep=''))
intensityvar_heat + labs(x='date', y='id') +
theme(plot.caption=element_text(size=8, hjust=0, margin=margin(t=15)))
dev.copy2pdf(file = paste(graphpath, graphtitle, ' ',
".pdf", sep=''), paper="a4r", width=10, height=10)
dev.off()
}
}