r - 为什么 stat_summary 仅当数字位于 y 而不是 x 时才产生误差线?

标签 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在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/

相关文章:

r - 为 R 网页设置传单标题

r - 用样条线连接点

r - R如何根据现有数据创建列/功能

r - 无法在docker镜像中安装R包

r - 如何在 persp 中只有其他边界

R 绘制积分

r - 在不同图中的 geom_bar 中指定颜色

r - 在ggplot中循环变量

r - 将XY点添加到由levelplot生成的栅格 map 中

r - 当 R 图中axes=F 时,par(xpd=NA) 不起作用