Sto provando a scrivere una funzione che traccia un grafico ggplot facet_wrap
su più pagine. È solo un trucco, poiché questa funzione sembra essere presente nella lista delle cose da fare della funzione ggplot2. Faccio alcuni piccoli calcoli per trovare il numero di pagine di cui ho bisogno, il numero di righe del mio data.frame
di cui ho bisogno per pagina ecc. Sono abbastanza sicuro che tutto funzioni.R + ggplot: traccia su più pagine
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()
mio problema è che, avvolgendo il tutto in un ciclo come questo, tra le pdf()
e dev.off()
funzioni, è che il ciclo non sembra aspettare che ggplot a fare la sua cosa, e attraversa il suo ciclo molto rapidamente e genera un PDF non valido.
Se ho impostato i = 1
, avviare il pdf()
, eseguire il codice sopra all'interno del ciclo for, quindi impostare i=2
, quindi eseguire il codice, e così via fino a quando mi annoio (i=3
) quindi spegnere il dispositivo PDF risultante è brillante.
C'è un modo per far sì che il ciclo for attenda che la linea finale termini il tracciamento prima di passare alla successiva iterazione?
wow che funzioni completamente. Non avevo idea che la stampa potesse essere usata in questo modo. –
È perché 'p' è un oggetto. L'ultima riga del tuo codice modifica l'oggetto 'p', ma poi vuoi' print() 'sul dispositivo. – JoFrhwld
Sì, è un ostacolo comune. A volte scrivo una funzione in ggplot2, e ometto 'print()' attorno alla parte finale, quindi non ottengo output ... – aL3xa