1

我正在尝试在 R 中制作带有误差线的堆积条形图,以获取我想要预定义而不是计算的值,但每个条形图都有不同的值。

例如,如果我的数据框是:

x<-data.frame(
  Period = c("B1","D1a"),
  Sample = c("Glucose","Glucose"),
  Mi = c(2,3),
  M0 = c(4,6)
)

我可以用这段代码制作我需要的条形图:

mx <- melt(x,  id.vars=1:2)
ggplot(mx, aes(x=Period, y=value, fill=variable), xLabels=NA) +
  geom_bar(stat="identity") +
  facet_grid(~Sample) +
  scale_fill_manual(values = c("grey69","black")) +
  theme_bw() +
  xlab("") + 
  ylab ("")

那么,如果我的每个置信区间为 B1、Mi = 0.5、B1、M0 = 0.2、D1a、Mi = 0.1、D1a、M0 = 0.2,我该如何为每个误差条添加一个误差线

如何在条形图的每个部分上制作误差线?

谢谢

4

1 回答 1

3

首先,将上限和下限添加到mx数据框:

library(dplyr)
mx <- mx %>% group_by(Period) %>%
  mutate(pos = cumsum(value)) %>%
  ungroup() %>%
  mutate(ci = c(.5, .1, .2, .2),
         upper = pos + ci/2,
         lower = pos - ci/2)

然后,将 a 添加geom_errorbar到您的情节中:

ggplot(mx, aes(x=Period, y=value, fill=variable), xLabels=NA) +
  geom_bar(stat="identity") +
  geom_errorbar(aes(ymin = lower, ymax = upper), width = .2, col = "red") +
  facet_grid(~Sample) +
  scale_fill_manual(values = c("grey69","black")) +
  theme_bw() +
  xlab("") + 
  ylab ("")

在此处输入图像描述

于 2016-09-08T07:21:15.747 回答