我试图将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 = …Run Code Online (Sandbox Code Playgroud) 例如,
ggplot(mpg, aes(class, hwy)) + geom_boxplot(
outlier.colour = "black",
outlier.shape = 24,
outlier.fill = "red",
outlier.size = 3
)
Run Code Online (Sandbox Code Playgroud)
根据示例,我知道对于紧凑级而言,所有离群值都来自大众或丰田
mpg[mpg$class == "compact" & mpg$hwy > 35, ]
Run Code Online (Sandbox Code Playgroud)
这样,不是要把所有离群值都标记为红色,我只想让离群值由制造商进行颜色编码?我可以吗?我尝试了类似的方法,outlier.fill = factor ( mpg$manufacturer)但是失败了。

编辑:这不是ggplot2中Coloring boxplot异常点的重复吗?因为我真正需要的是与第一种颜色相反的颜色,而不仅仅是第二种颜色,所以我不想匹配美观的颜色。