Как извлечь значения доверительного интервала из сводки статистики ggplot2 в R? - PullRequest
0 голосов
/ 11 января 2019

У меня есть данные подсчета с двумя типами плотности (уровень: 1 и 3). Я построил необработанные данные с доверительными интервалами при загрузке, используя функцию summary_stat в R. Я хочу извлечь верхние и нижние пределы доверительного интервала из этого графика. Как мне этого добиться?

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

1 Ответ

0 голосов
/ 11 января 2019

Вы можете использовать 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']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...