Как мне получить ggplot, чтобы начать ось х с определенного месяца - PullRequest
0 голосов
/ 24 апреля 2018

Я хочу построить график голов, забитых в футбольных матчах по месяцам, для сезона, который начинается в ноябре, но переносится на следующий год. Итак, я хочу иметь ось х Ноябрь, декабрь, январь и т. д.

Вот куда я попал с некоторыми игрушечными данными

library(tidyverse)
library(lubridate)
df <- data.frame(date = as.Date(c("2017-11-01","2017-11-15",
                              "2017-12-01","2017-12-15",
                              "2018-01-01","2018-01-15")),
             goals = c(3,2,0,1,3,5))

df %>% 
  mutate(month=month(date,label = TRUE)) %>% 
  group_by(month) %>% 
  summarize(totGoals=sum(goals)) %>% 
  ggplot(aes(month,totGoals)) +
  geom_bar(stat = "identity")

enter image description here

В идеале, я бы хотел использовать пакет purrr для решения этой проблемы, но у меня проблемы с получением доступа к fct_reorder и fct_relevel. 'месяц' - упорядоченный фактор

ТИА

Ответы [ 2 ]

0 голосов
/ 24 апреля 2018

График YYYY-MM вместо просто MM, таким образом, он будет упорядочен по годам.

library(tidyverse)
library(lubridate)
df <- data.frame(date = c("2017-11","2017-11",
                          "2017-12","2017-12",
                          "2018-01","2018-01"),
                 goals = c(3,2,0,1,3,5))

df = df %>% 
  group_by(date) %>% 
  summarize(totGoals=sum(goals))

plot = ggplot(df, aes(date,totGoals)) +
  geom_bar(stat = "identity")

print(plot)

enter image description here

0 голосов
/ 24 апреля 2018

Мы можем преобразовать столбец month в коэффициент и установить уровень, начинающийся с Nov.month.abb - это встроенный объект R с сокращениями месяца.

df %>% 
  mutate(month=month(date,label = TRUE)) %>% 
  group_by(month) %>% 
  summarize(totGoals=sum(goals)) %>% 
  mutate(month = factor(month, levels = c(month.abb[11:12], month.abb[1:10]))) %>%
  ggplot(aes(month,totGoals)) +
  geom_bar(stat = "identity") 

enter image description here

...