Prima ho fatto il tuo MWE in un data.table
perché è più veloce
library(data.table)
library(ggplot2)
library(gridExtra)
df <- data.table(read.table(text = "
xvalue yvalue location planting crop
1 5 A early corn
2 3 A late corn
6 2 A early soy
7 4 A late soy
4 7 S early corn
2 6 S late corn
3 2 S early soy
5 1 S late soy
", sep = "", header = TRUE))
ho incollato insieme il vostro planting
e corn
informazioni per creare una colonna separata:
df[ , plantingCrop := paste(df$planting, df$crop, sep = "-") ]
ho creato un vettore di carattere che ha tutte le combinazioni di planting
e crop
. Capirete perché in un secondo:
plantingCrop1 <- unique(df$plantingCrop)
Io uso gridExtra
per creare tutti i lotti in separato .pdf
pagine. Fondamentalmente ho creato un ciclo che traccia tanti grafici quanti sono i caratteri nell'oggetto plantingCrop1
che ho creato sopra.In ogni ciclo, dat
è il gruppo di sottoseti che si desidera tracciare, dal gruppo unico plantingCrop
da quando abbiamo incollato le colonne planting
e crop
insieme. Ripete questo finché non è stato fatto tutto.
pdf("plantingCrop.pdf", onefile = TRUE)
for(i in 1:length(plantingCrop1)){
dat <- subset(df, plantingCrop==plantingCrop1[i])
cropPlot <- ggplot(dat, aes(xvalue,yvalue)) +
geom_boxplot(aes(color = location)) +
theme_bw() +
ggtitle(bquote(atop(.("Boxplot of Stuff"),
atop(italic(.(plantingCrop1[i])), "")))) +
labs(x = "xvalue", y = "yvalue") +
theme(legend.position = "top", legend.title=element_blank())
grid.arrange(cropPlot)
}
dev.off()
Ho incluso anche il modo giusto per nominare i file utilizzando il nome plantingCrop
come sottotitolo. È nella chiamata ggtitle
.
Ti incoraggio a cambiare geom_boxplot(aes(color = location))
a geom_boxplot(aes(fill = location)
quando hai più dati mentre vengono visualizzati su un grafico migliore, ma per il momento l'ho lasciato in questo modo in modo da poter vedere i diversi gruppi.
Qualcosa [come questo] (http://stackoverflow.com/a/19147917/2461552)? – aosmith