为什么stat_summary仅在数字在y而不是x时产生错误条?

时间:2014-02-05 16:05:59

标签: r plot ggplot2

我试图围绕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) 

产生我想要的情节类型:

plot with error bars

但是如果我尝试在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) 

Imgur

我知道我可以通过简单地将+ 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对数字所在的轴敏感,以及是否有办法告诉它我的数据的格式不是默认格式? 谢谢!

1 个答案:

答案 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)