使用facet_grid时在ggplot2中指定自定义误差线

3
我已经使用stat_summary从我的数据中创建了多个条形图。但是,我想手动指定误差线的限制(而不是使用mean_cl_boot)。如何为使用facet_grid绘制的数据完成此操作?
下面是我用来创建这些图表的代码:
graph <- ggplot(slantclean, aes(x = View,value, fill = Texture))

graph + stat_summary(fun.y = mean, geom = "bar", position = "dodge") + 
     stat_summary(fun.data = mean_cl_boot, geom = "pointrange", 
                     position = position_dodge(width = 0.90)) + 
     labs(x = "View", y = "Vertical height of ellipse (cm)", fill = "Texture") + 
     facet_grid( Shape ~ TNOGroup)

很不幸,数据的复杂性使得无法提供最小示例。可以在这里访问数据框架。这里是绘图的示例here


1
如果您在 ggplot 调用之外汇总数据(而不依赖于 stat_summary),那么您很可能会更成功。然后,您可以在那个时候指定误差条的大小,并将该汇总数据作为数据参数传递给 geom_pointrange - Brian Diggs
我最终做到了这一点,结果非常简单。感谢您的建议。 - luser
1个回答

8
您可以定义自己的函数来在 stat_summary() 中使用。如果您在 stat_summary() 中使用 geom="pointrange",则您的函数应该在一个数据框中给出yyminymax值。
下面是一个示例,用于创建函数 my.fun,计算最小值、最大值和平均值。当在 stat_summary() 中使用时,这些值将为您的数据中的每个级别进行计算。
my.fun<-function(x){data.frame(ymin=min(x),ymax=max(x),y=mean(x))}

graph <- ggplot(slantclean, aes(x = View,value, fill = Texture))

graph + stat_summary(fun.y = mean, geom = "bar", position = "dodge") + 
  stat_summary(fun.data = my.fun, geom = "pointrange", position = position_dodge(width = 0.90)) + 
  labs(x = "View", y = "Vertical height of ellipse (cm)", fill = "Texture") + 
  facet_grid( Shape ~ TNOGroup)

enter image description here


恭喜 @Didzis 达成 10K! - Arun
我不得不按照原帖上的评论建议去做,因为R计算组间均值时出现了奇怪的情况。然而,这对未来非常有用,谢谢! - luser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接