我想要一个看起来就像下面那个的盒子图。但是,我想提出(1)95%置信区间和(2)没有异常值,而不是默认值。
95%置信区间可能意味着(i)延长盒子并去除胡须,或(ii)只有一个平均值和胡须,并移除盒子。或者,如果人们有其他想法在这样的情节中呈现95%的置信区间,我愿意接受建议。最终目标是在同一图上显示多个类别的数据的平均值和配置间隔。
set.seed(1234)
df <- data.frame(cond = factor( rep(c("A","B"), each=200) ),
rating = c(rnorm(200),rnorm(200, mean=.8))
ggplot(df, aes(x=cond, y=rating, fill=cond)) + geom_boxplot() +
guides(fill=FALSE) + coord_flip()
图片和代码来源:http://www.cookbook-r.com/Graphs/Plotting_distributions_(ggplot2)/
答案 0 :(得分:6)
我使用以下内容显示95%的间隔。根据我所读到的内容,并非常见的使用盒子和胡须,但它不是默认设置,所以你需要明确你所显示的内容。曲线图。
quantiles_95 <- 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
}
ggplot(df, aes(x=cond, y=rating, fill=cond)) +
guides(fill=F) +
coord_flip() +
stat_summary(fun.data = quantiles_95, geom="boxplot")
不使用geom_boxplot
,而是使用stat_summary
和自定义函数来指定您要使用的限制:
"ymin"
是下胡须的下限"lower"
是下方框的下限"middle"
是框的中间(通常是中位数)"upper"
是上方框的上限"ymax"
是上胡须的上限。在提供的函数(quantiles_95
)中,内置quantile
函数与自定义probs
参数一起使用。如上所述,胡须将覆盖90%的数据:从最低5%到高95%。像往常一样,这些盒子将在中间的两个四分位数中,从25%到75%。
您可以随时更改自定义功能以选择不同的分位数(甚至不使用分位数),但您需要非常小心。正如评论中指出的那样,当人们看到一个盒子和胡须情节时,会有一定的期望。如果您使用相同的形状图来传达不同的信息,那么您很可能会让人感到困惑。
如果您想摆脱胡须,请"ymin"
等于"lower"
,"ymax"
等于"upper"
。如果您想要所有胡须而且没有框,请将"upper"
和"lower"
设置为"middle"
(或只使用geom_errorbars
)。
答案 1 :(得分:5)
您可以通过将大小设置为0来隐藏异常值:
ggplot(df, aes(x=cond, y=rating, fill=cond)) +
geom_boxplot(outlier.size = 0) +
guides(fill=FALSE) + coord_flip()
您可以使用stat_summary
函数将平均值添加到绘图中:
ggplot(df, aes(x=cond, y=rating, fill=cond)) +
geom_boxplot(outlier.size = 0) +
stat_summary(fun.y="mean", geom="point", shape=23, size=4, fill="white") +
guides(fill=FALSE) +
coord_flip()