Объединение отдельных столбцов месяца и года в график в ggplot2 - PullRequest
2 голосов
/ 26 марта 2019

Я был на форумах в поисках решения моей проблемы, но, похоже, ничего не нашел. Производные моего вопроса и их ответ тоже не очень помогли. Мои данные имеют четыре столбца, один для года и один для месяца). Я давно хотел построить данные в одном графике без использования каких-либо аспектов в течение многих лет в ggplot. Вот с чем я до сих пор боролся:

df<-data.frame(Month = rep(c("January", "February", "March", "April", "May", "June",
                         "July", "August", "September", "October", 
                         "November", "February", "March"),each = 20), 
           Year = rep(c("2018", "2019"), times = c(220, 40)), 
                      Type = rep(c("C", "T"), 260), 
                                 Value = runif(260, min = 10, max = 55))
df$Month<-ordered(df$Month, month.name)
df$Year<-ordered(df$Year)
ggplot(df) + 
  geom_boxplot(aes(x = Month, y = Value, fill = Type)) +
  facet_wrap(~Year)

В идеале я бы хотел справиться с этим, используя dplyr и lubridate. Любая помощь будет оценена!

Ответы [ 2 ]

4 голосов
/ 26 марта 2019

Один из вариантов будет сделать истинное значение даты, тогда вы можете использовать форматер оси даты. Примерно так это грубое начало

ggplot(df) + 
  geom_boxplot(aes(x = lubridate::mdy(paste(Month, 1, Year)), y = Value, fill = Type, group=lubridate::mdy(paste(Month, 1, Year)))) + 
  scale_x_date(breaks="month", date_labels = "%m")

enter image description here

0 голосов
/ 26 марта 2019

Ты имеешь в виду это?

 df<-data.frame(Month = rep(c("January", "February", "March", "April", "May", "June",
                             "July", "August", "September", "October", 
                             "November", "February", "March"),each = 20), 
               Year = rep(c("2018", "2019"), times = c(220, 40)), 
               Type = rep(c("C", "T"), 260), 
               Value = runif(260, min = 10, max = 55))
df$Month <- factor(df$Month,levels=c("January", "February", "March", "April", "May", "June",
                             "July", "August", "September", "October", 
                                  "November", "Dicember"), ordered = T)
df$Month<-ordered(df$Month)
df$Year<-ordered(df$Year)
df$Year_Month <- paste0(df$Month, " ", df$Year)

df$Year_Month <- factor(df$Year_Month, levels = unique(df$Year_Month))

ggplot(df) + 
  geom_boxplot(aes(x = Year_Month, y = Value, fill = Type)) 

enter image description here

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