我有一个数据集,其中在不同的日期对不同的组进行了测量。

我希望并排的条形图代表不同组在不同天的测量值,条形图的组根据测量的日期间隔开,并且误差线覆盖在它们上面。

我在使geom_bar中的闪避与geom_errorbar上的闪避一致时遇到麻烦。

这是一段简单的代码:

days          = data.frame(day=c(0,1,8,15));
groups        = data.frame(group=c("A","B","C","D", "E"), means=seq(0,1,length=5));


my_data       = merge(days, groups);


my_data$mid   = exp(my_data$means+rnorm(nrow(my_data), sd=0.25));
my_data$sigma = 0.1;


png(file="bar_and_errors_example.png", height=900, width=1200);
plot(ggplot(my_data, aes(x=day, weight=mid, ymin=mid-sigma, ymax=mid+sigma, fill=group)) +
     geom_bar      (position=position_dodge(width=0.5))                                   +
     geom_errorbar (position=position_dodge(width=0.5), colour="black")                   +
     geom_point    (position=position_dodge(width=0.5), aes(y=mid, colour=group)));
dev.off();

在图中,错误段与条形图之间有固定的偏移量(很抱歉,即使ggplot2是主题,新手也不能使用任何图)。

geom_bar中调整binwidth时,偏移量不是固定的,并且每天都在变化。

注意,geom_errorbargeom_point一起闪避。
如何获得geom_bar与其他两个人达成共识?

任何帮助表示赞赏。

最佳答案

对齐问题部分归因于您的条形不能代表您想要的数据。以下内容正确排列:

ggplot(my_data, aes(x=day, weight=mid, ymin=mid-sigma, ymax=mid+sigma, fill=group)) +
     geom_bar      (position=position_dodge(), aes(y=mid), stat="identity") +
     geom_errorbar (position=position_dodge(width=0.9), colour="black") +
     geom_point    (position=position_dodge(width=0.9), aes(y=mid, colour=group))

08-19 23:08