如何使geom_bar中的闪避与geom_errorbar,geom_point中的闪避一致

use*_*185 16 plot r ggplot2

我有一个数据集,可以在不同的日期对不同的组进行测量.

我希望并排表示不同日期的测量值的并排条形图,其中条形组根据测量日间隔,并且误差栏覆盖在它们上面.

我在躲避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();
Run Code Online (Sandbox Code Playgroud)

在图中,错误显示与其条形图有一个固定的偏移量(抱歉,即使ggplot2是主题,也不允许新手使用图表).

调整binwidth时geom_bar,偏移量不固定,每天都会变化.

请注意,那geom_errorbar并同时geom_point躲闪.我如何geom_bar同意其他两个?

任何帮助赞赏.

Bri*_*ggs 20

对齐问题部分是由于您的条形图不代表您想要的数据.以下排列正确:

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))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


nou*_*use 5

这是一个古老的问题,但是由于我今天遇到了这个问题,因此我想添加以下内容:

 geom_bar(position = position_dodge(width=0.9), stat = "identity") + 
   geom_errorbar( position = position_dodge(width=0.9), colour="black") 
Run Code Online (Sandbox Code Playgroud)

中的width-argument position_dodge控制要相互躲避的事物的躲避宽度。然而,这产生了与条一样宽的晶须,这可能是不希望的。在position_dodge之外的另一个宽度参数控制晶须(和条)的宽度:

 geom_bar(position = position_dodge(width=0.9), stat = "identity", width=0.7) + 
   geom_errorbar( position = position_dodge(width=0.9), colour="black", width=0.3) 
Run Code Online (Sandbox Code Playgroud)

  • 我注意到这个问题,但使用宽度改变了胡须的位置,现在它们不再与条形对齐 (2认同)

Jav*_*imi 5

有时你输入aes(x=tasks,y=val,fill=group)geom_bar不是ggplot. 这会导致问题,因为 ggplot 会向前看,x并且您通过每个组的位置来指定它。