Я пытаюсь сопоставить цвет ящиков 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 вариант boxplot, кажется, выбирает один цвет поперек, а не как эстетический, если я правильно понимаю. Я не против использования цветовой эстетики, если это помогает.
Edit:
Адаптировано это решение (изменение определения вискера в geom_boxplot). Горизонтальное уклонение reset от 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()