Как построить вектор значений в указанном порядке в ggplot? - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть вектор значений (означает столбец), которые все относятся к определенному вопросу. Я пытаюсь нанести значения на ось Y и название вопроса на оси X. Мой фрейм данных выглядит так:

> colMeansDf
    colMeans Question
Q2  3.468240       Q2
Q3  3.677858       Q3
Q4  3.147913       Q4
Q5  3.072595       Q5
Q6  2.382940       Q6
Q7  2.556261       Q7
Q8  2.852087       Q8
Q9  2.663339       Q9
Q10 2.816697      Q10
Q11 4.735027      Q11
Q12 3.820327      Q12
Q13 3.000000      Q13
Q14 3.114338      Q14
Q15 2.806715      Q15
Q16 2.238657      Q16
Q17 3.228675      Q17
Q18 2.023593      Q18
Q19 3.986388      Q19
Q20 2.913793      Q20
Q21 2.611615      Q21
Q22 2.446461      Q22

Теперь, когда я пытаюсь использовать ggplot для визуализации этих данных, ggplot, похоже, по какой-то причине меняет порядок фрейма данных, и вместо того, чтобы начинать с Q2 и заканчивать с Q22, я получаю ось X, которая переходит с Q10 на Q19, Q2, Q20, Q21, Q22, Q23 и с Q3 на Q9.

Пока мой код такой:

ggplot(colMeansDf, aes(x = Questions, y = colMeans)) +
    geom_point(alpha = .6) +
    labs(x = "Question", y = "Average Reponse") +
    geom_hline(yintercept = mean(colMeansDf$colMeans), color = "red") +
    scale_y_continuous(limits = c(1, 7), breaks = 1:7)

Спасибо, вперед!

1 Ответ

1 голос
/ 16 апреля 2019

Привет. Сортировка имен вопросов в виде строк. Вы можете добавить индекс (только с номером вопроса) и использовать этот индекс для числовой перестановки имен вопросов.

colMeansDf <- colMeansDf %>% 
  mutate(index = as.numeric(substr(Questions,2,nchar(as.character(Questions)))),
         Questions = factor(Questions, levels=((colMeansDf %>% arrange(index))$Questions)))

ggplot(colMeansDf, aes(x = Questions, y = colMeans)) +
  geom_point(alpha = .6) +
  labs(x = "Question", y = "Average Reponse") +
  geom_hline(yintercept = mean(colMeansDf$colMeans), color = "red") +
  scale_y_continuous(limits = c(1, 7), breaks = 1:7)
...