сезонный ggplot в R? - PullRequest
       51

сезонный ggplot в R?

1 голос
/ 16 марта 2020

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

library(tidyverse)
mydata = data.frame(seq(as.Date("2010-01-01"), to=as.Date("2011-12-31"),by="days"), A = runif(730,10,50))
colnames(mydata) = c("Date", "A")
DF = mydata %>%
     mutate(Year = year(Date), Month = month(Date), Day = day(Date)) %>%
     filter(Month == 11 | Month == 12 | Month == 01 | Month == 02 | Month == 03 | Month == 04)

Я попытался изменить порядок данных, начиная с 11 месяца, затем 12 месяца, а затем 01,02,03 и 04. Я использовал код factor(Month, levels = c(11,12,01,02,03,04)) вместе с кодом выше, но он не работал. Я хотел сюжет, который начинается в ноябре месяце и заканчивается в апреле. Следующий код дал мне прикрепленный сюжет

ggplot(data = DF, aes(Month,A))+
  geom_bar(stat = "identity")+ facet_wrap(~Year, ncol = 2)

enter image description here

Прямо сейчас, сюжет начинается в январе вплоть до декабря - я не хочу этого , Я хочу, чтобы сюжет начинался в ноябре и вплоть до апреля. Я попытался обозначить сюжет, используя scale_x_date(labels = date_format("%b", date_breaks = "month", name = "Month"), который не сработал. Любая помощь будет

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

user2332849 ответ близок, но вносит ошибку. Панель не в правильном порядке. Например, для 2010 года на графике показаны данные за ноябрь и декабрь до начала года. Чтобы построить график в правильном порядке, необходимо скорректировать год, чтобы календарь начинался на 11-м месяце и переходил на 4-й.

#Convert month to Factor and set desired order
DF$Month<- factor(DF$Month, levels=c(11, 12, 1, 2, 3, 4))
#Adjust the year to match the year of the beginning of series
#For example assign Jan, Feb, Mar and April to prior year
DF$Year<-ifelse(as.integer(as.character(DF$Month)) <6, DF$Year-1, DF$Year)

#plot
ggplot(data = DF, aes(Month,A))+
  geom_bar(stat = "identity") + 
  facet_wrap(~Year, ncol = 3)

На графике ниже первые 4 месяца 2010 года сдвинуты в последние 4 периода предыдущего года. И последние 2 месяца 2011 года готовы к первым 4 месяцам 2012 года.

enter image description here

0 голосов
/ 17 марта 2020

Я преобразовал Месяц в символ перед применением коэффициента (), и это сработало.

DF = mydata %>%
  mutate(Year = year(Date), Month = month(Date), Day = day(Date)) %>%
  filter(Month %in% c(11, 12, 1, 2, 3, 4)) %>%
  mutate(Month = sprintf("%02d", Month)) %>%
  mutate(Month = factor(Month, levels = c("11","12","01","02","03","04")))

ggplot(data = DF, aes(Month,A))+
  geom_bar(stat = "identity")+ facet_wrap(~Year, ncol = 2)

Вывод:

enter image description here

...