这是与this one相关的问题。我正在处理两个组的箱图,并使用该问题中提出的函数n_fun进行了一些小修改(我使用y = 10来定位“n =”,因为我发现它在中位数之上令人不安)。
这是功能:
n_fun <- function(x){
return(data.frame(y = 10, label = paste0("n = ",length(x))))
}
ggplot(mtcars, aes(x=factor(cyl), mpg, fill=factor(am))) +
geom_boxplot() + stat_summary(fun.data = n_fun, geom = "text")
问题是该函数识别出有两个不同的“n =”要绘制,但它们在一个'y'
上一起绘制。我试图在n_fun
的y位置输入一个向量,它被接受了。但是,我得到两个过分的“n =”。我正在为stat_summary
寻找类似“position = dodge”的东西,或者告诉ggplot
它必须以与绘制躲闪的箱形图相同的方式绘制这些文本。
答案 0 :(得分:1)
好吧,正如帮助?position_dodge
所述:躲避不同宽度的东西可能会很棘手。您可能需要明确指定躲避的宽度。在你的情况下:
ggplot(mtcars, aes(x=factor(cyl), mpg, fill=factor(am))) +
stat_summary(fun.data = n_fun, geom = "text",
position = position_dodge(.9))