如何使躲闪geom_bar在geom_errorbar与躲闪同意,geom_point(How to

2019-07-02 11:54发布

我有其中的测量在不同的日子不同的群体做了一个数据集。

我想通过表示在不同天的与酒吧,根据与重叠以他们errorbars测量天隔开的组不同的组的测量侧杆具有侧。

我在与投资于闪避麻烦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();

在图中,errorsegments似乎与它的酒吧的固定偏移(对不起,没有允许,即使GGPLOT2是受新手地块)。

当binwidth在调整geom_bar ,偏移不是固定的,从天变为一天。

请注意,这geom_errorbargeom_point闪避串联。 如何获得geom_bar与其他两个同意?

任何帮助表示赞赏。

Answer 1:

对齐问题,其部分原因,到你吧不是代表你想让你的数据。 下面的几行正确:

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))



Answer 2:

第一个变化我根据格式化代码预研风格指南 。

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

现在,当我们看数据,我们看到这一天是一个因素,其他一切都是一样的。

str(my_data)

要我转换当日列因素的情节删除空白空间。 检查水平是适当的顺序继续之前。

my_data$day <- as.factor(my_data$day) 
levels(my_data$day)

我所做的下一个变化是在你的定义Ÿ aes参数。 正如我敢肯定,大家都知道,这让ggplot知道到哪里寻找y值。 然后我改变了位置参数“躲闪”和添加了stat="identity"的说法。 在"identity"参数告诉ggplot x处绘制年。 geom_errorbar继承了道奇位置geom_bar这样你就可以把它指定,但geom_point并不那么你必须指定值。 默认闪避position_dodge(.9)

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



Answer 3:

这是一个老问题,但因为我今天遇到了这个问题,我想补充以下内容:

 geom_bar(position = position_dodge(width=0.9), stat = "identity") + 
   geom_errorbar( position = position_dodge(width=0.9), colour="black") 

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) 


Answer 4:

有时你把aes(x=tasks,y=val,fill=group)geom_bar而非ggplot 。 这使得自ggplot期待的问题x你每个组的位置指定。



文章来源: How to make dodge in geom_bar agree with dodge in geom_errorbar, geom_point
标签: r plot ggplot2