Нужно сделать гистограмму с двумя столбцами данных из data.frame - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь сделать столбчатую диаграмму из двух столбцов из data.frame рядом друг с другом.Я пробовал:

barplot(data.frame$data1, data.frame$data2, data=data.frame)

here is data:   
   Neutral Emotional
1   0.790   1.6400
2   0.051   0.0880
3   0.891   2.7200
4   0.430   1.1800
5   -0.009  -0.6000

, но он делает тонну баров вместо двух.Я пытаюсь получить два бара, один с нейтральным, с эмоциональными и ошибочными барами, представляющими SEM.

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Способы достижения этого результата обсуждаются в этом руководстве .Обратите внимание, что они рекомендуют ggplot2 более barplot.

Чтобы получить график со шкалами ошибок для стандартной ошибки среднего значения:

library(tidyverse)

data.frame %>% 
  gather(Var, Val) %>% 
  group_by(Var) %>% 
  summarise(Mean = mean(Val), 
            SD = sd(Val), 
            SE = SD/sqrt(n())) %>% 
  ggplot(aes(Var, Mean)) + 
  geom_col() + 
  geom_errorbar(aes(ymin = Mean - SE, 
                    ymax = Mean + SE),
                width = 0.5)

Результат:

enter image description here

Однако : обратите внимание, что так называемые "графики динамита" не очень хорошо воспринимаются экспертами по визуализации данных.Для небольшого количества образцов лучше показывать диапазон, используя geom_boxplot или geom_jitter.

Boxplot:

data.frame %>% 
  gather(Var, Val) %>% 
  ggplot(aes(Var, Val)) + 
  geom_boxplot()

enter image description here

Джиттер со средним:

data.frame %>% 
  gather(Var, Val) %>% 
  ggplot(aes(Var, Val)) + 
  geom_jitter(width = 0.2) + 
  stat_summary(geom = "crossbar", 
               fun.y = mean, 
               fun.ymax = mean, 
               fun.ymin = mean, 
               color = "red", 
               width = 0.4)

enter image description here

1 голос
/ 08 мая 2019

Можно указать gather в формате 'long', а затем использовать geom_bar из ggplot2

library(tidyverse)
library(ggplot2)
gather(df1) %>% 
    ggplot(., aes(x = key, y = value)) +
        geom_bar(stat = 'identity')

Если нам также нужна строка ошибок, тогда

gather(df1) %>% 
     ggplot(., aes(x = key, y = value)) +
         stat_summary(fun.y = mean, geom = "bar") + 
         stat_summary(fun.data = mean_se, geom = "errorbar")

enter image description here

данные

df1 <- structure(list(Neutral = c(0.79, 0.051, 0.891, 0.43), Emotional = c(1.64, 
0.088, 2.72, 1.18)), class = "data.frame", row.names = c("1", 
"2", "3", "4"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...