【发布时间】:2011-12-14 04:09:15
【问题描述】:
我正在尝试将箱线图的异常值颜色与美学 (scale_colour_discrete) 设置的填充颜色相匹配。
这是一个例子。
m <- ggplot(movies, aes(y = votes, x = factor(round(rating)),
fill=factor(Animation)))
m + geom_boxplot() + scale_y_log10()
这会生成下面的图。如何将那些黑点更改为身体中使用的红色/绿色?如果我理解正确,箱线图的 outlier.colour 选项似乎选择了一种颜色,而不是美学。如果有帮助,我不介意使用色彩美学。
编辑:
改编自this solution (Changing whisker definition in geom_boxplot)。 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()
【问题讨论】:
-
这在当前版本中是不可能的,但在下一个版本中将是可能的。
-
@kohske,也许你仍然可以从你的评论中得到答案。如果 yosukesabai 接受这个答案,那么 SO 社区就很清楚这个问题已经解决了。 (它给你一些代表:))。
-
其实我找到了kohske的回答"Changing whisker definition in geom_boxplot",可能适合解决我的问题。希望不会太恶心...
-
@kohske,您能否详细说明新版本中将修复的内容和时间框架?如果 x 比例是离散的,我只是使用 position='dodge' 跨不同的几何图形工作。这是正在进行的事情吗?
-
@JoshO'Brien,我不认为我的“解决方案”是可以接受的......当我弄清楚如何将这两个数据集分开时,我会照你说的做。感谢您的评论。