Based on what I know, facet_grid might be the best solution in this case. facet_grid can not only help you group graphs by one variable, but also two or even more, there is a labeller argument, which is designed to set up a label.
myfunction <- function(var, string) { print(var) print(string) result <- paste(as.character(string),'_new', sep="") return(result) } ggplot(diamonds, aes(carat, price, fill = ..density..)) + xlim(0, 2) + stat_binhex(na.rm = TRUE) + theme(aspect.ratio = 1) + facet_grid(~color, labeller=myfunction, as.table=TRUE)

However, as you can see, the graph is on the same line, and I donโt think it can be easily divided into several lines, even if you enabled the as.table flag based on.
Do you think this will be possible if you add a new column for labeling? Then you can keep awesome facet_wrap ...
diamonds$label <- paste(as.character(diamonds$color), "_new", sep="") ggplot(diamonds, aes(carat, price, fill = ..density..)) + xlim(0, 2) + stat_binhex(na.rm = TRUE) + theme(aspect.ratio = 1) + facet_wrap(~label)

source share