ggplot2 - 在置信区间更改颜色

时间:2017-03-20 23:30:47

标签: r plot ggplot2

我想将置信区间的颜色设置为与它们所属的错误条相同的颜色。

 rat3 <- rep(c(1:6,6:2,3:1,2:4), 20)
 logRT <- rep(seq(from=6, to=7.6, by=0.1), 20)
 condition <- rep(c("c","i"),170)          
 condition <- as.factor(condition)           #turns to 1-2, is c-i in my data
 meto <- cbind(rat3, logRT, condition)
 meto <- as.data.frame(meto)             #this produces a df similar to mine

这是情节的代码:

  barmeto <- ggplot(meto, aes(rat3, logRT, colour=condition)) #assign 
  barmeto + geom_smooth(method="lm") + 
  stat_summary(fun.data=mean_cl_boot, geom="errorbar", lwd=1.5) +
  scale_colour_grey(start=0.15, end=0.5)

它生成一个带有2个相同浅灰色漏斗的图像。对不起,除了像这样,我既不能上传也不能嵌入或发布图片链接: https://stats.stackexchange.com/questions/268740/ggplot2-change-colour-of-ci

我需要两个漏斗才能有不同的颜色。非常短的应该是黑色的,就像它所属的误差条(短漏斗黑色),长的一个深灰色,就像它的误差条。

感谢您的帮助,谢谢!到目前为止,我在这里找到的食谱都没有给我工作。

1 个答案:

答案 0 :(得分:0)

要重现所链接的图表,您应将aes填充和颜色设置为因子条件,然后添加scale_fill_grey

# factor condition variable in meto
meto$condition <- factor(meto$condition)

# plot with fill and colour aes
barmeto <- ggplot(meto, aes(rat3, logRT, colour=condition, fill=condition))
barmeto + geom_smooth(method="lm") + 
  stat_summary(fun.data=mean_cl_boot, geom="errorbar", lwd=1.5) +
  scale_colour_grey(start=0.15, end=0.5) +
  scale_fill_grey(start=0.15, end=0.5)

由于回归线在此示例中重叠,您可能还希望为每个条件设置线型或线宽。您的灰度值也非常接近彼此和背景,尝试更多不同的值和/或设置为theme_bw()。

例如,下面的代码大小为aes和theme_bw()会产生下面的图:

barmeto <- ggplot(meto, aes(rat3, logRT, colour=condition, fill=condition, size=condition))
barmeto + geom_smooth(method="lm") + 
  stat_summary(fun.data=mean_cl_boot, geom="errorbar") +
  scale_colour_grey(start=0.1, end=0.5) +
  scale_fill_grey(start=0.1, end=0.5) + 
  scale_size_manual(values=c(2,1)) +
  theme_bw()

enter image description here

编辑回答评论问题,要编辑线型,您可以在aes上设置,线型选择可以在这里看到:http://www.cookbook-r.com/Graphs/Shapes_and_line_types/

barmeto <- ggplot(meto, aes(rat3, logRT, colour=condition, fill=condition, size=condition, linetype=condition))
barmeto + geom_smooth(method="lm") + 
  stat_summary(fun.data=mean_cl_boot, geom="errorbar") +
  scale_colour_grey(start=0.1, end=0.5) +
  scale_fill_grey(start=0.1, end=0.5) + 
  scale_size_manual(values=c(2,1)) +
  scale_linetype_manual(values=c("solid", "twodash")) +
  theme_bw()

你仍然有回归线重叠的问题,在这种情况下你可能只是喜欢以条件换面:

barmeto <- ggplot(meto, aes(rat3, logRT, colour=condition, fill=condition))
barmeto + geom_smooth(method="lm") + 
  stat_summary(fun.data=mean_cl_boot, geom="errorbar", lwd=1.5) +
  scale_colour_grey(start=0.15, end=0.5) +
  scale_fill_grey(start=0.15, end=0.5) +
  facet_wrap(~condition) + theme_bw()

enter image description here