我想将箱线图(boxplot)的异常值颜色与美学设置的填充颜色(scale_colour_discrete)匹配。
这是一个例子。
m <- ggplot(movies, aes(y = votes, x = factor(round(rating)),
fill=factor(Animation)))
m + geom_boxplot() + scale_y_log10()
以下代码生成了下图。我该如何将这些黑点改成正文中使用的红色/绿色颜色?如果我理解正确,箱线图的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()