我有两种密度的计数数据(级别:1和3)。我已经在R中使用summary_stat函数绘制了具有引导约束置信区间的原始数据。我想从该图中提取置信区间的上限和下限。我该如何实现?
data <- data.frame(set = c(1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 4, 4),
density = c(1, 3, 3, 1, 3, 1, 1, 1, 3, 3, 1, 3),
counts = c(100, 2, 3, 76, 33, 12, 44, 13, 54, 36, 65, 1),
ratio = c(1, 2, 3, 4, 1, 2, 3, 4, 5, 6, 90, 1))
data$density <- as.factor(data$density)
pd <- position_dodge(0.82)
library(ggplot2)
ggplot(data, aes(x=density, y=counts, fill=density)) +
theme_bw() +
stat_summary(geom="bar", fun.y=mean, position = "dodge") +
stat_summary(geom="errorbar", fun.data=mean_cl_boot, width = 0.1,
size = 1.2, col = "grey57", position = pd) +
ylab("Counts")
答案 0 :(得分:1)
您可以使用ggplot_build()
。
该功能为您提供了两条信息:数据帧列表(每一层一个)和一个面板对象,其中包含有关轴限制,中断等的所有信息。
p <- ggplot(data, aes(x=density, y=counts, fill=density)) +
theme_bw() +
stat_summary(geom="bar", fun.y=mean, position = "dodge") +
stat_summary(geom="errorbar", fun.data=mean_cl_boot, width = 0.1,
size = 1.2, col = "grey57", position = pd) +
ylab("Counts")
plot_info <- ggplot_build(p)$`data`[[2]]
对于您而言,所有相关信息都存储在ymin
中第二个列表的ymax
和$data
列中。
# density 1 error bounds
density1_error_min <- plot_info[1, 'ymin']
density1_error_max <- plot_info[1, 'ymax']
# density 3 error bounds
density3_error_min <- plot_info[2, 'ymin']
density3_error_max <- plot_info[2, 'ymax']