2017-03-10 42 views
1

我有我从做了如下箱线图:我想填充只有特定的颜色在箱线GGPLOT2

#Data 
set.seed(395) 
Env<- data.frame(CO2= c(cumsum(rnorm(1*36)), cumsum(rnorm(1*36))), 
        Group= rep(c("A","B"), each=36), 
        Segment=rep(seq(1,12),each=36)) 

ggplot(data=subset(Env, !is.na(Segment)),aes(factor(Segment),CO2))+ 
    geom_boxplot()+ 
    facet_wrap(~ Group)+ 
    theme_bw()+ 
    labs(x="Time segment", y="CO2") 

enter image description here

上色3日,9日和12箱线图的特定颜色:绿色,红色和紫色。这可能吗?

我尝试没有成功如下:

scale_fill_manual(values = c("", "","green","","","","","","red","","","purple")) 

例如像这样:

enter image description here

+0

这是更难帮助绘制的问题,如果你不提供[重复的例子(http://stackoverflow.com/questions/5963269/how-to-make具有样本输入数据的可重复示例)。 – MrFlick

回答

3

要做到这一点,最简单的方法是:

  1. 将数据帧添加一列与要使用
  2. 地图的列中的颜色012gggplot审美。
  3. 使用+ scale_fill_identity()将列的值映射到它们表示的颜色。
set.seed(395) 
Env<- data.frame(CO2= c(cumsum(rnorm(1*36)), cumsum(rnorm(1*36))), 
        Group= rep(c("A","B"), each=36), 
        Segment=rep(seq(1,12),each=36)) 

Env$fillcol <- NA 
Env$fillcol[Env$Segment %in% c(3,9,12) & Env$Group == "A"] <- "red" 
Env$fillcol[Env$Segment %in% c(2,10,12) & Env$Group == "B"] <- "blue" 

ggplot(data=subset(Env, !is.na(Segment)),aes(x = factor(Segment), y = CO2, fill = fillcol)) + 
    geom_boxplot()+ 
    facet_wrap(~ Group)+ 
    theme_bw()+ 
    labs(x="Time segment", y="CO2") + 
    scale_fill_identity() 

Result