我正在尝试创建带有描述性信息(平均值、计数等)的箱线图。我找到了很多关于如何为具有不同组的一个箱线图添加数字的示例,但我没有找到一种为多个箱线图网格(facet_wrap)添加这些数字的方法。
例如,本文介绍了如何为一个箱线图添加数字 - 我正在尝试对多个箱线图执行相同的操作
library(reshape2)
library(ggplot2)
df.m <- melt(iris, id.var = "Species")
p <- ggplot(data = df.m, aes(x=variable, y=value)) +
geom_boxplot(aes(fill=Species))
p + facet_wrap( ~ variable, scales="free")
Run Code Online (Sandbox Code Playgroud)
在此图的顶部 - 我想在每个框的顶部添加相关的描述信息。
创建计算计数和平均值的函数
stat_box_data <- function(y) {
return(
data.frame(
y = 0.5+1.1*max(y), #may need to modify this depending on your data
label = paste('count =', length(y), '\n',
'mean =', round(mean(y), 1), '\n')
)
)
}
)
}
df.m <- melt(iris, id.var = "Species")
Run Code Online (Sandbox Code Playgroud)
如果您有较大的异常值而不是上面的内容,您可能需要使用此或类似的内容y=0.5...:
y=quantile(y,probs=0.95)*1.1,
绘制数据并stat_summary与您的自定义函数一起使用
ggplot(data = df.m, aes(x=Species, y=value)) +
geom_boxplot(aes(fill=Species))+
stat_summary(
fun.data = stat_box_data,
geom = "text",
hjust = 0.5,
vjust = 0.9
) +
facet_wrap( ~ variable, scales="free")
Run Code Online (Sandbox Code Playgroud)