13

stat_summary在 ggplot 中使用来绘制条形图。我想改变条的宽度。通常这是使用width选项完成的。使用预先汇总的数据,stat="identity它可以按预期工作:

data <- data.frame(group=rep(c("a","b"), 20), y=rnorm(40,100,50))
se <- function(x, na.rm=T) sd(x, na.rm=na.rm)/sqrt(length(x))
data2 <- cast(data, group ~ ., value="y", c(mean, se))
ggplot(data2, aes(group, mean, ymin=mean-1.96*se, ymax=mean+1.96*se)) +
 geom_bar(stat="identity", width=0.5) + geom_errorbar(width=0, size=2)

但是,在使用 原始数据的同一图中stat_summary,条形不会改变宽度,而误差线会:

ggplot(data, aes(group, y)) + stat_summary(fun.y="mean", geom="bar", width=0.5) +
 stat_summary(fun.data="mean_cl_normal", geom="errorbar", width=0, size=2)

有没有办法在使用时改变条形宽度stat_summary

由于第一个示例有效,因此这个问题显然已经有了解决方法,但是,我真的很想知道是否有任何方法可以使用stat_summary,因为我经常使用它并且通常更方便。

谢谢!

4

2 回答 2

12

这是已知问题444235的主题

width当前的解决方案是在内部传递aes——这违背了ggplot(映射与设置)的原则,但至少它有效....

请注意,linerange如果您想要没有错误栏的错误栏,您可以使用!

ggplot(data, aes(group, y)) + 
 stat_summary(fun.y="mean", geom="bar", aes(width=0.5)) +
  stat_summary(fun.data="mean_cl_normal", geom="linerange",  size=2)

在此处输入图像描述

于 2013-07-05T01:21:00.820 回答
1

此问题已得到解决。width现在也适用于stat_summaryand geom="errorbar"

于 2020-05-28T15:34:09.630 回答