Попытка вручную изменить порядок гистограммы в R - PullRequest
0 голосов
/ 17 апреля 2020

Мне нужен этот график, чтобы отображать бары в другом порядке.

Стол "pretest" должен быть первым. Ничего не происходит, кроме меняющихся этикеток. Был бы очень признателен за помощь!

Это исследование имеет смысл, только если таблица в правильном порядке.

Я использовал этот код, пытаясь изменить порядок.

plot_data2 <- main_data %>%
  dplyr::select(training_type,
                pretest_result,
                C1_reps,
                C2_reps,
                P1_reps,
                P2_reps) %>%
  drop_na(pretest_result) %>%
  gather(test, reps, pretest_result, C1_reps, C2_reps, P1_reps, P2_reps) %>%
  group_by(test, training_type) %>%
  summarise(
    mean = mean(reps),
    lci = t.test(reps)$conf.int[[1]],
    uci = t.test(reps)$conf.int[[2]]
  ) %>%
  ungroup() %>%
mutate(test = factor(
  test,
  levels = c("pretest_result", "C1_reps", "C2_reps", "P1_reps", "P2_reps")
))

Это мой код для сюжета.

ggplot(plot_data2, aes(x=test, y = mean, fill = training_type)) + 
    geom_bar(stat="identity", position=position_dodge()) +
    geom_errorbar(aes(ymin=lci, ymax=uci),
                  width=.2,                    
                  position=position_dodge(.9)) +
  scale_y_continuous(breaks = c(5,1,2,3,4)) +
  scale_x_discrete(labels = c("Pretest", "C1", "C2", "P1", "P2")) +
  labs(x = "Test type", y = "Average repitions", fill = "Training type") +
  theme_bw()

Это мои данные

main_data <- structure(
  list(
    Horse = c("Skori", "Raudhetta", "Emma", "Freyr", 
 "Nick", "Hilda", "Aleiga", "Sinfonia", "Saga", "Fengur", "Herkules", 
 "Rumur", "Gaia", "Frøya", "Fanta", "Lindus", "Betty", "Sjamina", 
 "Dimma", "Astrix", "Presley", "Odin", "Poineten", "Gåte", "Skori", 
 "Raudhetta", "Emma", "Freyr", "Nick", "Hilda", "Aleiga", "Sinfonia", 
 "Saga", "Fengur", "Herkules", "Rumur", "Gaia", "Frøya", "Fanta", 
 "Lindus", "Betty", "Sjamina", "Dimma", "Astrix", "Presley", "Odin", 
 "Poineten", "Gåte"), 
 C1_reps = c(5, 
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6, 
4, 5, 6, 6, 4, 5, 5, 5, 4, 5, 5, 4, 5, 6, 6, 5, 5, 5, 5, 6, 5, 
4, 4, 5, 4, 5), 
C2_reps = c(5, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
5, 6, 6, 5, 6, 5, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
5, 5, 5, 5, 5, 5, 5, 5, 6, 5, 5, 6, 6, 6, 4, 5), 
Compliance = c(3, 
4, 4, 3, 3, 2, 1, 4, 4, 4, 3, 4, 1, 4, 1, 3, 3, 4, 4, 4, 3, 4, 
1, 3, 4, 4, 4, 4, 3, 3, 4, 4, 4, 4, 4, 3, 4, 3, 4, 3, 4, 3, 4, 
4, 4, 3, 4, 3), 
P1_reps = c(5, 5, 4, 5, 5, 4, 3, 4, 6, 7, 7, 
0, 4, 6, 3, 6, 7, 0, 7, 4, 4, 3, 6, 5, 1, 0, 1, 0, 1, 1, 0, 2, 
1, 0, 0, 0, 1, 2, 1, 3, 0, 0, 0, 1, 1, 2, 2, 1), 
P2_reps = c(NA, 
 NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 6, 6, 2, 6, 7, 4, 
 6, 5, 6, 4, 4, 6, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
 NA, 0, 1, 1, 1, 0, 0, 0, 0, 0, 2, 1, 0), 
Test.group = c(1, 1, 
 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 
 3, 3, 3, 3), 
training_type = c("PC", "PC", "PC", "PC", "PC", 
"PC", "PC", "PC", "PC", "PC", "PC", "PC", "PC", "PC", "PC", "PC", 
"PC", "PC", "PC", "PC", "PC", "PC", "PC", "PC", "TT", "TT", "TT", 
"TT", "TT", "TT", "TT", "TT", "TT", "TT", "TT", "TT", "TT", "TT", 
"TT", "TT", "TT", "TT", "TT", "TT", "TT", "TT", "TT", "TT"), 
pretest_result = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, 3, 6, 2, 4, 0, 0, 3, 5, 4, 2, 9, 0, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, 6, 4, 2, 2, 1, 0, 5, 4, 6, 
6, 16, 0) 
), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-48L))

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

Порядок баров определяется порядком уровней факторов. Чтобы изменить порядок баров, вам нужно изменить порядок уровней факторов, добавив что-то вроде следующего после вашего первого вызова mutate (). Перечислите уровни вашего фактора в том порядке, в котором вы хотите, чтобы ваши бары отображались

mutate(test = forcats::fct_relevel(test, "pretest_result", "C1_reps", "C2_reps", "P1_reps", "P2_reps"))
0 голосов
/ 17 апреля 2020

добавить ordered = T параметр в ваш скрипт "P2_reps")) ...

... мутировать (test = factor (test, level = c ("pretest_result", "C1_reps", "C2_reps", "P1_reps", "P2_reps") ) заказано = T )

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