Как снять алфавитный порядок кадров в gganimate? - PullRequest
2 голосов
/ 11 марта 2020

У меня есть фрейм данных с наблюдениями каждый месяц. Я хотел бы сделать GIF из наблюдений каждый месяц. Однако в gganimate кадры располагаются в алфавитном порядке (например, начиная с апреля вместо января). Как я могу изменить порядок кадров?

В качестве альтернативы, я мог бы использовать номер месяца, чтобы график работал правильно. Однако в этом случае мне придется изменить заголовок кадра на январь, февраль, март и т. Д. c. вместо 1, 2, 3 ... я понимаю, что этот ответ может решить проблему, но он все еще не отвечает, возможно ли каким-либо образом диктовать порядок кадров в gganimate.

monthly.data <- data.frame(month = rep(c("January", "February", "March", "April", "May","June", "July", "August", "September", "October", "November", "December"), 10), xval = rnorm(n = 120,10,3), yval=rnorm(120,10,3))

    # This plots it in alphabetical order
    ggplot(monthly.data, aes(x = xval, y = yval))+
      geom_point()+
      transition_states(month)+
      ggtitle("{closest_state}")

    # Ordering the dataframe correctly doesn't help
    mothly.data <- arrange(monthly.data, factor(month, levels = c("January", "February", "March", "April", "May","June", "July", "August", "September", "October", "November", "December")))

    ggplot(monthly.data, aes(x = xval, y = yval))+
      geom_point()+
      transition_states(month)+
      ggtitle("{closest_state}")

1 Ответ

3 голосов
/ 11 марта 2020

ggplot заботится о порядке уровней факторов при построении графика.

Вы можете создать вектор месяцев как factor с желаемыми уровнями с самого начала, это ваше дело.

Редактировать: Ссылаясь на комментарий @Gregor Thomas

monthly.data$month = factor(monthly.data$month, levels = month.name)

...