ho chiesto this domanda ieri sulla memorizzazione di un complotto all'interno di un oggetto. Ho provato a implementare il primo approccio (consapevole di non specificare che stavo usando qplot()
nella mia domanda originale) e ho notato che non funzionava come previsto.trama Memorizzazione di oggetti in un elenco
library(ggplot2) # add ggplot2
string = "C:/example.pdf" # Setup pdf
pdf(string,height=6,width=9)
x_range <- range(1,50) # Specify Range
# Create a list to hold the plot objects.
pltList <- list()
pltList[]
for(i in 1 : 16){
# Organise data
y = (1:50) * i * 1000 # Get y col
x = (1:50) # get x col
y = log(y) # Use natural log
# Regression
lm.0 = lm(formula = y ~ x) # make linear model
inter = summary(lm.0)$coefficients[1,1] # Get intercept
slop = summary(lm.0)$coefficients[2,1] # Get slope
# Make plot name
pltName <- paste('a', i, sep = '')
# make plot object
p <- qplot(
x, y,
xlab = "Radius [km]",
ylab = "Services [log]",
xlim = x_range,
main = paste("Sample",i)
) + geom_abline(intercept = inter, slope = slop, colour = "red", size = 1)
print(p)
pltList[[pltName]] = p
}
# close the PDF file
dev.off()
ho usato i numeri di esempio in questo caso, in modo che il codice viene eseguito se è appena copiato. Ho passato qualche ora a riflettere su questo, ma non riesco a capire cosa sta andando storto. Scrive il primo set di pdf senza problemi, quindi ho 16 pdf con i grafici corretti.
Poi quando uso questo pezzo di codice:
string = "C:/test_tabloid.pdf"
pdf(string, height = 11, width = 17)
grid.newpage()
pushViewport(viewport(layout = grid.layout(3, 3)))
vplayout <- function(x, y){viewport(layout.pos.row = x, layout.pos.col = y)}
counter = 1
# Page 1
for (i in 1:3){
for (j in 1:3){
pltName <- paste('a', counter, sep = '')
print(pltList[[pltName]], vp = vplayout(i,j))
counter = counter + 1
}
}
dev.off()
il risultato che ottengo è l'ultima linea modello lineare (abline
) su ogni grafico, ma i dati non cambia. Quando controllo la mia lista di grafici, sembra che tutti vengano sovrascritti dalla trama più recente (ad eccezione dell'oggetto abline
).
Una domanda secondaria meno importante era come generare un pdf di muli-page con diversi grafici su ciascuna pagina, ma l'obiettivo principale del mio codice era archiviare i grafici in un elenco a cui avrei potuto accedere in un secondo momento.
Grazie a RCS e Jonathan, questo ha risolto il problema. Non ero a conoscenza dell'argomento dati e del modo in cui poteva essere utilizzato per archiviare i dati. Sto esaminando quella sezione del libro ora. – womble