我试图将boxplot的异常值颜色与美学(scale_colour_discrete)设置的填充颜色相匹配.
这是一个例子.
m <- ggplot(movies, aes(y = votes, x = factor(round(rating)),
fill=factor(Animation)))
m + geom_boxplot() + scale_y_log10()
Run Code Online (Sandbox Code Playgroud)
这会在下面生成图表.如何将这些黑点更改为身体中使用的偏红/绿色?如果我理解正确的话,boxplot的outlier.colour选项似乎选择了一种颜色,而不是审美.如果有帮助,我不介意使用色彩美学.
编辑:
改编了这个解决方案(在geom_boxplot中更改whisker定义).水平躲闪由stats_summary重置,我无法弄清楚如何取回它.因为我现在知道,所以我可以根据需要放弃异常值和拉伸胡须.
# define the summary function
f <- function(x) {
r <- quantile(x, probs = c(0.05, 0.25, 0.5, 0.75, 0.95))
names(r) <- c("ymin", "lower", "middle", "upper", "ymax")
r
}
# define outlier function, beyound 5 and 95% percentiles
o <- function(x) {
subset(x, x < quantile(x,probs=c(0.05))[1] | quantile(x,probs=c(0.95))[1] < x)
}
m <- ggplot(movies, aes(y = votes, x = factor(round(rating)),
colour=factor(Animation)))
m <- m + stat_summary(fun.data=f, geom='boxplot')
m <- m + stat_summary(fun.y=o, geom='point', aes(colour=factor(Animation)))
m + scale_y_log10()
Run Code Online (Sandbox Code Playgroud)

cbe*_*ica 10
正如@koshke所说,现在可以通过以下方式轻松实现类似于框线(而不是填充颜色)的异常值outlier.colour = NULL:
m <- ggplot(movies, aes(y = votes, x = factor(round(rating)),
colour = factor(Animation)))
m + geom_boxplot(outlier.colour = NULL) + scale_y_log10()
Run Code Online (Sandbox Code Playgroud)

outlier.colour 必须用"ou"写outlier.colour 必须在外面 aes ()我发布这个作为一个迟到的答案,因为我发现自己一次又一次地看着这个,我也发布了相关问题ggplot2中的着色boxplot异常点?.
小智 5
我找到了一个解决方案,即geom_boxplot(outlier.colour = NULL)在最新版本的R 中设置不再起作用(@jonsnow谈论ggplot2的1.0.0版本).
为了复制@cbeleites提出的行为,您只需使用以下代码:
update_geom_defaults("point", list(colour = NULL))
m <- ggplot(movies, aes(y = votes, x = factor(round(rating)),
colour = factor(Animation)))
m + geom_boxplot() + scale_y_log10()
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,这会生成带有与线条颜色匹配的点的图.
当然,如果他需要绘制多个图,应该记住恢复默认值:
update_geom_defaults("point", list(colour = "black"))
Run Code Online (Sandbox Code Playgroud)
通过阅读github上的ggplot2更改日志找到了解决方案:
geom_boxplot()使用默认颜色,大小和形状 的异常值geom_point().更改geom_point()with 的默认值update_geom_defaults()将对异常值应用相同的更改geom_boxplot().以前无法更改异常值的默认值.(@ThierryO,#757)
也发布在这里:ggplot2中的着色boxplot异常点?