在 R 中制作具有指定误差条值的堆积条形图
Making stacked bar plot with specified error bar values in R
我正在尝试在 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,我该如何为每个添加误差条
如何在条形图的每个部分制作误差线?
谢谢
首先,将上限和下限添加到您的 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)
然后,将 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 ("")
我正在尝试在 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,我该如何为每个添加误差条
如何在条形图的每个部分制作误差线?
谢谢
首先,将上限和下限添加到您的 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)
然后,将 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 ("")