我有一个数据集,其中在不同的日期对不同的组进行了测量。
我希望并排的条形图代表不同组在不同天的测量值,条形图的组根据测量的日期间隔开,并且误差线覆盖在它们上面。
我在使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_errorbar
和geom_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))