Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
堆叠条形图(r)中错误定位的错误条_R_Ggplot2_Errorbar_Stackedbarseries - Fatal编程技术网

堆叠条形图(r)中错误定位的错误条

堆叠条形图(r)中错误定位的错误条,r,ggplot2,errorbar,stackedbarseries,R,Ggplot2,Errorbar,Stackedbarseries,我正试图根据这个问题,制作一个带有错误条的堆叠条形图,前面回答了这个问题 但是,我的错误条位置不正确。我尝试过改变SD的顺序,这会使误差条相对彼此移动,但它们仍然不会与堆叠的条对齐 x <- data.frame(Period = c("Mon","Tue","Wed","Thu","Fri","Sat","Sun"), Sample = c("Day","Day","Day","Day","Day","Day","Day"), "12AM-6AM" = c(23.14,16.43,16,

我正试图根据这个问题,制作一个带有错误条的堆叠条形图,前面回答了这个问题

但是,我的错误条位置不正确。我尝试过改变SD的顺序,这会使误差条相对彼此移动,但它们仍然不会与堆叠的条对齐

x <- data.frame(Period = c("Mon","Tue","Wed","Thu","Fri","Sat","Sun"), Sample = c("Day","Day","Day","Day","Day","Day","Day"), "12AM-6AM" = c(23.14,16.43,16,22.71,36.86,87.14,110.71), "6AM-12PM" = c(16.14,20.86,18.43,16.71,15.14,14.29,16), "12PM-6PM" = c(26.86,23.71,25.57,23.43,35.29,38,30), "6PM-12AM" =c(35.86,34.14,31.71,36.43,45.57,44,27.14))

library(dplyr)
library(reshape2)

 mx <- melt(x,  id.vars=1:2)
 mx <- mx %>% group_by(Period) %>%
      mutate(pos = cumsum(value)) %>%
      ungroup() %>%
      mutate(sd = c( 5.4, 2.7, 4.7, 4.4, 8.2, 13.2, 20.7,
                    5.6, 2.3, 5.4, 5.5, 1.6, 4.1, 3.1,
                   5.2, 5.6, 5.9, 3.5, 6.3, 4.5, 6.9,
                   3.5, 6.0, 5.9, 6.2, 8.2, 9.0, 2.4
                   ),
             upper = pos + sd/2,
             lower = pos - sd/2)

    days<-c("Mon", "Tue", "Wed","Thu","Fri", "Sat", "Sun")
    ggplot(mx, aes(x=Period, y=value, fill=variable), xLabels=NA) +
      geom_bar(stat="identity") +
      facet_grid(~Sample) + geom_errorbar(aes(ymin = lower, ymax = upper),
 width = .2, col = "red") +
      theme_bw() + scale_x_discrete(limits = days) +
      xlab(" Day of the Week") + scale_fill_grey() +
      ylab ("Number of calls")
x%
解组()%>%
变异(sd=c(5.4,2.7,4.7,4.4,8.2,13.2,20.7,
5.6, 2.3, 5.4, 5.5, 1.6, 4.1, 3.1,
5.2, 5.6, 5.9, 3.5, 6.3, 4.5, 6.9,
3.5, 6.0, 5.9, 6.2, 8.2, 9.0, 2.4
),
上部=位置+sd/2,
下部=位置-sd/2)

天我认为发生这种情况是因为
变量
在y轴上自上而下地绘制,但是
cumsum(值)
中的总和是在假设它们是自下而上绘制的情况下计算的

在求和之前,我对数据帧进行了重新排序,然后它开始工作:

x
#>正在附加程序包:“重塑2”
#>以下对象已从“package:tidyr”屏蔽:
#> 
#>史密斯
mx%
分组单位(期间)%>%
排列(描述(变量))%>%
变异(
pos=总和(值),
上部=位置+sd/2,
下=位置-sd/2
) %>%
解组()

太感谢你了!我尝试了不同的方法对堆叠的条进行重新排序(例如[order(df$fill_var,discreating=T),]),但这并没有解决问题。这很好用!