我正在尝试了解 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在facet_render.wrap(plot$facet,panel,plot$coordinates,plot_theme(plot),:ggplot2当前不支持带有非笛卡尔坐标或coord_flip的自由刻度。
)
任何人都可以解释为什么 stat_summary
对数字所在的轴敏感,以及是否有办法告诉它我的数据采用的格式不是默认格式?
谢谢!
最佳答案
stat_summary()
帮助页面上的标题已经说明该函数汇总每个唯一 x 处的 y 值
。因此,如果您将 y 值设置为 Species,将 Sepal.Length 设置为 x,函数将尝试在每个唯一的 x 值处汇总 Species(这不会不起作用,因为 Species
不是数字并且无法计算置信区间)。
如果您在 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)
关于r - 为什么 stat_summary 仅当数字位于 y 而不是 x 时才产生误差线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21582251/