Le pregunté this pregunta ayer sobre el almacenamiento de un trazado dentro de un objeto. Intenté implementar el primer enfoque (consciente de que no especifiqué que estaba usando qplot()
en mi pregunta original) y me di cuenta de que no funcionaba como esperaba.Almacenar objetos de trazado en una lista
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()
He utilizado números de muestra en este caso para que el código se ejecute si se acaba de copiar. Pasé algunas horas desconcertando sobre esto, pero no puedo entender qué está pasando mal. Escribe el primer conjunto de pdfs sin problema, por lo que tengo 16 pdfs con los trazados correctos.
Entonces cuando uso este pedazo de código:
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()
el resultado que se ve es la última línea modelo lineal (abline
) en cada gráfica, pero los datos no cambia. Cuando reviso mi lista de parcelas, parece que todas se sobrescriben con el gráfico más reciente (con la excepción del objeto abline
).
Una pregunta secundaria menos importante fue cómo generar un pdf de páginas con varios gráficos en cada página, pero el objetivo principal de mi código era almacenar los gráficos en una lista a la que podía acceder en una fecha posterior.
Gracias RCS y Jonathan, esto solucionó el problema. No estaba al tanto del argumento de los datos y de cómo se podría usar para almacenar los datos. Estoy examinando esa sección del libro ahora. – womble