facet_grid - Segmentar facet_wrap en PDF de varias páginas
r ggplot2 facet (1)
Como todavía no hay respuesta Aqui hay uno:
library(ggplot2)
library(reshape2)
Ex <- read.csv("C:/Users/Thomas/Desktop/StackOverflowEx (3).csv")
gg <- melt(Ex, id = c("Item", "Total", "Admin"))
# put in number of plots here
noPlots <- 4
# save all variables in a seperate vector to select in for-loop
allVars <- unique(gg$variable)
noVars <- length(allVars)
# indices for plotting variables
plotSequence <- c(seq(0, noVars-1, by = noPlots), noVars)
# pdf("plotpath.pdf") # uncomment to save the resulting plots in a pdf file
# loop over the variables to plot
for(ii in 2:length(plotSequence)){
# select start and end of variables to plot
start <- plotSequence[ii-1] + 1
end <- plotSequence[ii]
# subset the variables and save new temporary data.frame
tmp <- subset(gg, variable %in% allVars[start:end])
cat(unique(tmp$variable), "/n")
# generate plot
p <- ggplot(tmp, aes(x = Total, y = Admin))+
geom_point(colour = "dark green", size = 1.5)+
geom_point(aes(y = value, color = variable))+
geom_smooth(aes(y = value, fill = variable),
method = loess, size = 1, linetype = 1, se = T)+
facet_wrap(~variable, ncol = 2, nrow = 1000)+
ylim(0, 1)+
labs(x = "Expected", y = "Admin")
print(p)
}
# dev.off()
He buscado una solución para esto, pero parece que la mayoría trata con parcelas generadas individualmente que se combinan en formato PDF, en lugar de separar las tramas generadas mediante la facetación en páginas separadas de un PDF.
En los datos anteriores usando el siguiente código, seleccionando todos los artículos en la lista generada:
Ex<-read.csv("StackOverflowEx (3).csv")
library(ggplot2)
library(reshape2)
vars <- select.list(names(Ex),multiple=TRUE,graphics=TRUE)
Cases<-subset(Ex,select=vars)
gg<-melt(Cases,id=c("Item","Total","Admin"))
print(ggplot(gg, aes(x=Total,y=Admin))+
geom_point(colour="dark green",size=1.5)+
geom_point(aes(y=value,color=variable))+
geom_smooth(aes(y=value,fill=variable),
method=loess,size=1,linetype=1,se=T)+
facet_wrap(~variable,ncol=2,nrow=1000)+
ylim(0,1)+
labs(x="Expected",y="Admin",title=vars))
... debería generar una envoltura de facetas de los 8 casos (AH). Sin embargo, generar esto tiende a obstaculizar las tramas y hacerlas menos legibles, y en la práctica, tengo la intención de usar esto en más de 500 casos (que simplemente devuelve barras etiquetadas con el nombre de la columna sin gráficos legibles).
¿Es posible especificar el número de gráficos en la faceta para que aparezcan en una página individual al convertir a PDF, en lugar de tener todas las tramas comprimidas en una sola página? Por ejemplo, usando los datos anteriores, generando dos gráficos de 2x2 en páginas separadas que contienen los 8 casos individualmente (es decir, Casos AD en la página 1, Casos EH en la página 2).
Podría hacer esto resaltando 4 casos + "Artículo", "Total" y "Administrador" y repitiendo para los próximos 4 casos y combinando los PDF resultantes. Sin embargo, con más de 500 casos en la práctica, esto significaría más de 100 iteraciones con muchas posibilidades de error humano. Algo de ayuda con la automatización del proceso sería genial.