我试图围绕stat_summary
的工作原理,因为我想用它来为包含所有单个数据点的绘图添加误差线。这是我不明白的地方:
ggplot(iris, aes(y = Sepal.Length, x = Species)) +
stat_summary(fun.data = mean_cl_boot, geom = "errorbar", width = 0.2) +
geom_point(aes(color = Species), size = 4)
产生我想要的情节类型:
但是如果我尝试在x轴而不是y轴上使用Sepal.Length制作绘图,则没有错误条:
ggplot(iris, aes(y = Species, x = Sepal.Length)) +
stat_summary(fun.data = mean_cl_boot, geom = "errorbar", width = 0.2) +
geom_point(aes(color = Species), size = 4)
我知道我可以通过简单地将+ coord_flip()
添加到第一个图来解决我的问题,但我真的想了解stat_summary
如何工作,为什么它对数据是否在x轴或y轴,以及如何告诉它我做了一些不同于预期的事情。
另外,我真的希望能够使用facet_wrap(~Factor, scales = "free")
来绘制我的真实数据,但这不起作用(Error in facet_render.wrap(plot$facet, panel, plot$coordinates, plot_theme(plot), : ggplot2 does not currently support free scales with a non-cartesian coord or coord_flip.
)
有人可以解释为什么stat_summary
对数字所在的轴敏感,以及是否有办法告诉它我的数据的格式不是默认格式?
谢谢!
答案 0 :(得分:2)
stat_summary()
帮助页面上的标题已经声明此功能Summarise y values at every unique x
。因此,如果您将y值设置为Species
并将Sepal.Length
设置为x,则函数将尝试在每个唯一x值处汇总Species
(这不起作用,因为Species
isn'无法计算数字和置信区间。)
如果要在stat_summary()
中设置另一个函数,例如fun.y=length
,那么你可以看到,对于每个唯一的x值,将计算观察次数(此函数也适用于因子和字符矢量)。
ggplot(iris, aes(y = Species, x = Sepal.Length)) +
stat_summary(fun.y = length, geom = "point", size=10)+
geom_point(aes(color = Species), size = 4)