scale_x_discrete Rot.Herb mapvalues from plyr, . , , -
...
library(plyr)
data$Rot.Herb.label <- mapvalues(data$Rot.Herb,
c('C2conv', 'C2low', 'S2conv', 'S2low', 'C3conv', 'C3low',
'O3conv', 'O3low', 'S3conv', 'S3low', 'A4conv', 'A4low',
'C4conv', 'C4low', 'O4conv', 'O4low', 'S4conv', 'S4low'),
c("Corn C", "Corn L", "Soybean C", "Soybean L",
"Corn C", "Corn L", "Oat C", "Oat L", "Soybean C",
"Soybean L", "Alfalfa C", "Alfalfa L", "Corn C", "Corn L",
"Oat C", "Oat L", "Soybean C", "Soybean L"))
ggplot(data, aes(Rot.Herb.label, kg.ha, fill=Crop))+
geom_boxplot()+
facet_grid(~rotation, scales = "free_x", space="free_x")+
scale_fill_brewer(palette = "Paired")+
ggtitle("Weed biomass by plot")+
theme(plot.title = element_text(size=30, face="bold", vjust=2))+
xlab("Rotation systems and Herbicide regimes (L = Low herbicide regime, C = Conventional herbicide regime)")+
theme(axis.text.x = element_text(angle = 90, hjust = 1))+
ylab("Weed dry weight")
...
