R 将单独的月份和年份列合并到ggplot2中的图形中

R 将单独的月份和年份列合并到ggplot2中的图形中,r,ggplot2,dplyr,R,Ggplot2,Dplyr,我一直在论坛上寻找我的问题的解决方案,但似乎什么都找不到。我的问题和他们的答案的衍生物也没有真正的帮助。我的数据有四列,一列表示年份,一列表示月份)。多年来,我一直希望在一个图形中绘制所有数据,而不使用ggplot中的任何方面。这就是我一直在努力解决的问题: df<-data.frame(Month = rep(c("January", "February", "March", "April", "May", "June", "July",

我一直在论坛上寻找我的问题的解决方案,但似乎什么都找不到。我的问题和他们的答案的衍生物也没有真正的帮助。我的数据有四列,一列表示年份,一列表示月份)。多年来,我一直希望在一个图形中绘制所有数据,而不使用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)
df你是这个意思吗

 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)) 

df一个选项是生成一个真实的日期值,然后可以使用日期轴格式化程序。这是一个艰难的开始

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")

Hi@MrFlick感谢您的快速回复,我认为这可能会奏效。有没有关于如何在这两个月之间添加垂直线的想法,尤其是当x轴在日期等级上时?@LeoOhyama你的意思是:完全正确!非常感谢!嘿@MrFlick。我还有一个问题。您的答案指定了变量“type”的填充美学,但图形仍然没有显示此填充。