Каков наилучший способ добавить панели ошибок на мой график? - PullRequest
0 голосов
/ 01 мая 2020

Ниже приведен код, который я использовал для создания гистограммы без баров ошибок. Как я могу лучше всего добавить в панели ошибок. Нужно ли мне использовать geom_errorbars, и если да, то как мне отформатировать это с тем, как форматируется мой фрейм данных для этого графика (на рисунке) Фрейм моих данных ?

ggplot(BrainPursuitsScore, aes(x = Conditions, y = Average_Score)) + 
geom_bar(stat = "identity", color = "black", fill = "Blue") + 
scale_y_continuous(breaks = seq(0, 100, 5)) + 
ggtitle("Brain Pursuits Score") + 
xlab("Group Name") + ylab("Average Score") + 
theme(plot.title = element_text(hjust = .5))

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Использование пакета tidyverse, в котором содержится ggplot2, устраняет необходимость расчета lb и ub, например

library(tidyverse)

data(ToothGrowth)
head(ToothGrowth)

ToothGrowth %>% mutate(dose = as.factor(dose)) %>% 
  group_by(supp, dose) %>% 
  summarise(new = list(mean_se(len))) %>% 
  unnest(new) %>% 
  ggplot(aes(x=dose, y=y, fill=supp)) + 
  geom_bar(stat="identity", color="black", 
           position=position_dodge()) +
  geom_errorbar(aes(ymin=ymin, ymax=ymax), width=.2,
                position=position_dodge(.9))

enter image description here

Вы можете использовать mean_sdl вместо mean_se для использования стандартного отклонения в качестве индикатора ошибки.

0 голосов
/ 01 мая 2020

Существует две опции ggplot2 и geom_errorbar или функция errbar от Hmisc Фрэнка Харрелла. Независимо от того, что вы выберете, вам нужно самостоятельно рассчитать расположение центров и конечных точек.

Мне не стоит возиться с репликацией ваших данных, поэтому приведу пример использования встроенного набора данных.

data(warpbreaks)

library(dplyr)
wb.summary = warpbreaks %>% 
  group_by(wool,tension) %>% 
  summarise(m = mean(breaks), 
            lb = mean(breaks) - 2 * sd(breaks), 
            ub = mean(breaks) + 2 * sd(breaks)) %>% 
  mutate(treatment = paste0(as.character(wool),
                        as.character(tension)))

Итак, просто чтобы увидеть, что у нас есть:

> wb.summary
# A tibble: 6 x 6
# Groups:   wool [2]
  wool  tension     m    lb    ub treatment 
  <fct> <fct>   <dbl> <dbl> <dbl> <chr>
1 A     L        44.6  8.36  80.8 AL   
2 A     M        24    6.68  41.3 AM   
3 A     H        24.6  4.01  45.1 AH   
4 B     L        28.2  8.50  47.9 BL   
5 B     M        28.8  9.92  47.6 BM   
6 B     H        18.8  8.99  28.6 BH   

Сначала мы нарисуем ваш барплот:

library(ggplot2)
g = wb.summary %>% 
  ggplot(aes(x = treatment, y = m)) + 
  geom_col()
g

enter image description here

Теперь мы добавляем строки ошибок

g = g + 
  geom_errorbar(aes(ymin = lb, ymax = ub)) + 
  ylim(0, 85)
g

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...