ggplot2:在不同的方面使用不同的颜色

时间:2013-10-03 19:46:15

标签: r ggplot2

我有一个看似非常基本的问题,但我无法解决它,因为我几乎没有使用ggplots2 ......我只是想让左边的情节使用变量color1中的颜色和right使用变量color2中的颜色。这是一个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)

非常感谢!

1 个答案:

答案 0 :(得分:4)

我认为对数据最简单的方法是创建一个额外的列,其颜色根据variable的值适当定义。由于variable只有两个可能的值,所以这并不难。

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)

enter image description here