你如何使用facet_wrap()和ggplot控制颜色

时间:2016-07-07 06:40:41

标签: r ggplot2 facet

我的图表看起来像这样:

x = c( rep(c(1,2,3,4,5),4)  )
group = c( rep(c(10,10,10,10,10),2),rep(c(20,20,20,20,20),2) )
value = rnorm(20)
dat = data.frame( x= x , group  = group, value = value)
dat = dat %>% # create the mu, sd, q1 and q3 aggregates
  group_by(group,x)  %>%  
  summarise(mu =  round(mean(value),2), 
            sd= sqrt(round(sd(value),2)), 
            Q1 = quantile(value)[2],
            Q3 = quantile(value)[4],
            count = n())
dat
dat2 = dat %>%  gather (key = Metric, value= Value,c(mu, sd, Q1, Q3)) #melt the data
as.data.frame(dat2)
ggplot(data=dat2 , aes(x=x, y=Value, group = Metric,colour = Metric)) + 
  geom_line()  + geom_point() + ylab("value") + 
  xlab("v") + 
  scale_x_discrete(breaks = c( seq(1,5,1)  ) ) +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  scale_y_continuous(breaks = c( seq(-3,3,.25)  )  ) +
  scale_colour_manual(values=c("blue", "blue", "red","red")) + 
  facet_wrap(~ group, ncol=3)

enter image description here

对于每个组,行是sd,mean,1st和3rd quartiles。我希望平均值和sd为蓝色,第1和第3个四分位数为红色。您可以看到颜色不正确。

(1)如何控制线条的颜色,使sd和mean为蓝色,四分位数为红色?

(2)如何使图例与线条匹配? 谢谢。

1 个答案:

答案 0 :(得分:2)

您可以更改scale_colour_manual中的值向量,如下所示:

scale_colour_manual(values=c(mu = "blue", sd = "blue", Q1 = "red", Q3 = "red"))

这样,订单无所谓。

完整的ggplot命令将是:

ggplot(data=dat2 , aes(x=x, y=Value, group = Metric,colour = Metric)) + 
  geom_line()  + geom_point() + ylab("value") + 
  xlab("v") + 
  scale_x_discrete(breaks = c( seq(1,5,1)  ) ) +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  scale_y_continuous(breaks = c( seq(-3,3,.25)  )  ) +
  scale_colour_manual(values=c(mu = "blue", sd = "blue", Q1 = "red", Q3 = "red")) + 
  facet_wrap(~ group, ncol=3)