I\'d like to create a faceted plot with margins in ggplot2. However, I\'d like the margin plot to have colours according to from which facet the particular point has been de
How about creating a new variable as a reference and colour the points by that? Seems to work provided you don't mind the points in the first 3 facets being coloured too.
mtcars$ref <- as.factor(mtcars$gear)
p <- ggplot(mtcars, aes(mpg, wt)) + geom_point(aes(col=as.factor(gear)))
p + facet_grid(.~ref, margins = TRUE)

EDIT: I have managed to get it to remove the colour key from the first 3 facets but not without playing around with the original data;
Duplicate the original data (so there are 2 of each record) then instead of using a margin plot to produce the "all" facet, using the redundant records instead.
library(ggplot2)
mtcars$ref <- (mtcars$gear)
# create the duplicate
dat <- do.call("rbind", replicate(2, mtcars, simplify = FALSE))
# give the duplicates a false value for "gear" so they can be plotted together
#This value can then be used for faceting, grouping everything with "all".
dat$ref[1:32] <- "all"
# where not in the "all" facet, change "gear" to one (so they are plotted with the same colour)
dat$gear[dat$ref != "all"] <- 1
# then plot using ref as the facet and gear to colour points.
p <- ggplot(dat, aes(mpg, wt)) + geom_point(aes(col=as.factor(gear)))
p + facet_grid(.~ref, margins = F)

I'm not sure that's the best way to go about it but perhaps someone with more expertise might be able to advise?