在2个不同的ggplot stat_summary函数中更改颜色 [英] Change colour in 2 different ggplot stat_summary functions

查看:64
本文介绍了在2个不同的ggplot stat_summary函数中更改颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的问题是

My question is an extension of this one but I have used 2 stat_summary calls in my ggplot. The first stat_summary shows the mean of each unit and the second stat_summary shows the overall mean for a group (time) of multiple units (see attached plot). Assigning the colours of the first stat_summary is no problem using colour=factor(unit) and specifying with scale_colour_manual(). I would like to assign colours in the second stat_summary by the 2 levels of time (pre and pst) e.g. colour=time, but i cannot then use scale_colour_manual again to specify colours. I have tried: colour=c("red", "blue"), colour=cbPalette2, aes(color=paste("mean", time))) (as suggested in the related question), but no luck. Any help would be much appreciated.

data:

 structure(list(time = c("pre", "pre", "pre", "pre", "pre", "pre","pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst"), unit = c(73, 72, 72, 73, 73, 75, 75, 75, 72, 72, 73,73, 75, 75, 72, 74, 71, 74, 74, 71, 71, 74, 74, 71, 72, 73, 72, 72, 73, 73, 72, 73, 72, 75, 75, 75, 75, 75, 71, 71, 71, 74, 74, 71, 74, 71, 70, 66, 68, 66, 68,70, 70, 66, 70, 68, 66, 68, 70, 67, 69, 69, 69, 67, 69, 67, 69, 66, 66, 66, 68, 68, 66, 68, 66, 68, 70, 70, 70, 70, 70, 67, 67, 69, 67, 69, 69, 67, 69, 67, 69, 76, 76, 76, 78, 78, 78, 76, 78, 78, 76, 77, 77, 77, 79, 79, 79, 77, 77, 79, 79, 78, 78, 78, 78, 76, 76, 76, 76, 76, 77, 79, 79, 77, 77, 79, 79, 77, 79), number = c(159, 152, 151, 157, 156, 169, 167, 166, 153, 155, 158, 160, 168, 170, 154, 164, 146, 162, 161, 150, 147, 165, 163, 149, 231, 236, 235, 233, 240, 238, 232, 237, 234, 246, 247, 248, 249, 250, 226, 230, 228, 245, 243, 227, 242, 229, 141, 123, 133, 122, 132, 143, 145, 121, 142, 131, 124, 134, 144, 130, 138, 140, 137, 126, 136, 129, 139, 201, 205, 203, 215, 213, 202, 212, 204, 214, 221, 222, 223, 224, 225, 206, 210, 216, 208, 220, 218, 207, 217, 209, 219, 174, 172, 171, 182, 184, 181, 173, 185, 183, 175, 177, 179, 176, 189, 186, 187, 180, 178, 190, 188, 262, 261, 265, 263, 251, 252, 253, 254, 255, 257, 269, 267, 256, 260, 266, 270, 258, 268), rep = c("A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C"), tied = c("C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "V", "V", "V", "V", "V", "V", "V", "V", "V", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "V", "V", "V", "V", "V", "V", "V", "V", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "V", "V", "V", "V", "V", "V", "V", "V", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "V", "V", "V", "V", "V", "V", "V", "V", "V", "V", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "V", "V", "V", "V", "V", "V", "V", "V", "V", "V", "C", "C", "C", "C", "C", "C", "C", "C", "C", "V", "V", "V", "V", "V", "V", "V", "V", "V"), measure = c(0.65, 0.32, 0.29, 0.53, 1.18, 0.62, 0.2, 0.38, 0.64, 0.29,0.45, 0.66, 0.18, 0.74, 0.36, 0.97, 0.27, 0.2, 0.5, 0.34, 0.19, 0.73, 0.58, 0.29, 0.47, 0.17, 0.75, 0.47, 0.37, 0.44, 0.79, 0.37, 0.51, 0.19, 0.28, 0.21, 0.18, 0.2, 0.01, 0.69, 0.66, 0.32, -0.05, 0.69, -0.0899999999999999, 0.52, 0.2, 0.17, 0.21, 0.2, 0.17, 0.31, 0.41, 0.38, 0.21, 0.47, 0.37, 0.29, 0.52, 0.26, 0.47, 0.27, 0.35, 1.14, 1.23, 0.81, 0.56, 0.64, 0.35, 0.43, 0.51, 0.44, 0.84, 0.59, 0.14, 0.55, 0.16, 0.13, 0.16, 0.15, 0.17, 0.31, 0.6, 0.22, 0.57, 0.65, 0.51, 0.77, 0.56, 0.51, 0.52, 0.2, 0.18, 0.03, 0.12, 0.37, 0.14, 0.1, 0.31, 0.16, 0.39, 0.2, 0.27, 0.17, 0.27, 0.14, 0.13, 0.28, 0.5, 0.23, 0.17, 0.05, 0.67, 0.4, 0.24, 0.18, 0.33, 0.22, 0.12, 0.15, 0.0700000000000001, 0, 0.02, 0.39, 0.41, 0.88, 0.28, -0.0600000000000001, -0.01)), .Names = c("time", "unit", "number", "rep", "tied", "measure"), row.names = c(NA,-129L), class = "data.frame")

code:

 cbPalette2 <- c("ghostwhite", "lightsteelblue1", "lightyellow" )
 unitcolours1<-c("purple","gold", "#999999","#009E73","plum1","#E69F00","#56B4E9","black","lightgreen","red","#0072B2","darkolivegreen3","#CC79A7","deeppink4")


 v<-ggplot(stack, aes(x=tied, y=measure, fill=time)) + 

 geom_point(size=0.5, aes(fill=factor(time), colour=factor(unit)), position=position_jitterdodge(jitter.width = NULL, jitter.height = 0, dodge.width = 0.75))+

    stat_summary(mapping=aes(shape=95, fill=time, colour=factor(unit)), fun.y= "mean", geom="point", size=6, position=position_dodge(width=0.75))+

    stat_summary(mapping=aes(shape=95, fill=time) , fun.y= "mean", geom="point", size=16, position=position_dodge(width=0.75))+

 facet_grid(.~rep)+
 labs(fill="time",  x="tied", y="measure (cP)")+
 scale_fill_manual(values=cbPalette2) +
 scale_colour_manual(values=unitcolours1)+
 guides(colour=FALSE)+
 scale_shape_identity() +
 theme_bw()+
 scale_y_continuous(limits=c(-0.1,1.24), breaks=seq(0, 1.2, 0.1))

解决方案

As I noted in my comment, I'm not sure how you want the plot to look, but you can get separate color mappings by using a filled marker (such as shapes 21 - 25) for one geom and a non-filled marker for another. Then you can map a variable to the fill aesthetic for the filled marker and map another variable to the colour aesthetic for the non-filled marker.

Here's an example, using a modified version of your code. This probably isn't quite what you had in mind, so let me know what you were actually trying to do and I'll modify as necessary.

pd = position_dodge(0.75)

ggplot(stack, aes(x=tied, y=measure)) + 
  geom_point(size=1, aes(fill=time), shape=21, colour=NA, 
             position=position_jitterdodge(jitter.width=NULL, jitter.height=0, dodge.width=0.75)) +
  stat_summary(shape=95, fun.y=mean, geom="point", size=12, position=pd) +
  stat_summary(shape=95, aes(colour=factor(unit)), fun.y=mean, geom="point", size=8, position=pd) +
  facet_grid(.~rep) +
  labs(fill="Time", x="tied", y="measure (cP)") +
  # scale_fill_manual(values=cbPalette2) +
  # scale_colour_manual(values=unitcolours1) +
  guides(colour=FALSE) +
  #scale_shape_identity() +
  theme_bw() +
  scale_y_continuous(limits=c(-0.1,1.24), breaks=seq(0, 1.2, 0.1))

这篇关于在2个不同的ggplot stat_summary函数中更改颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆