ggplot2: use different colors in different facets

2019-07-04 01:02发布

问题:

I have what seems to be a very basic problem, but I cannot solve it, as I have barely used ggplots2... I just want that the plot on the left uses the colors in the variable color1 and the plot on the right uses the colors in the variable color2. This is a MWE:

library(reshape2)
library(ggplot2)

a.df <- data.frame(
  id=c("a","b","c","d","e","f","g","h"), 
  var1=c(1,2,3,4,5,6,7,8), var2=c(21,22,23,24,25,26,27,28), 
  var3=c(56,57,58,59,60,61,62,63), 
  color1=c(1,2,"NONE","NONE",1,2,2,1), 
  color2=c(1,"NONE",1,1,2,2,"NONE",2)
)

a.dfm <- melt(a.df, measure.vars=c("var2","var3"))

ggplot(a.dfm, aes(x=value, y=var1, color=color1)) + 
  geom_point(shape=1) + 
  facet_grid(. ~ variable)

Thanks a lot!

回答1:

I think the easiest approach with your data is to create an additional column which has the color defined appropriately based on the value of variable. Since there are just two possible values that variable can take on, this isn't that hard.

a.dfm2 <- transform(a.dfm, 
                    color.use = ifelse(variable=="var2", 
                                       as.character(color1), 
                                       as.character(color2)))

ggplot(a.dfm2, aes(x=value, y=var1, color=color.use)) + 
  geom_point(shape=1) + 
  facet_grid(. ~ variable)



标签: r ggplot2