连续刻度箱线图的 ggplot 多因素分组

ggplot multi-factor-level grouping for boxplot with continuous scale

我正在尝试创建以下数据的箱线图

Temp<-rnorm(90,mean=100,sd=10)
Yr<-sample(c("1999","2000","2005","2009","2010"),size=90,replace=TRUE)
Month<-sample(c("June","July","August"),size=90,replace=TRUE)
Month
df<-data.frame(Temp,Month,Yr)

我想要的视觉效果和对应的代码如下:

ggplot(df,aes(x=interaction(Month,Yr),y=Temp,fill=Month))+
    geom_boxplot()+
    xlab("Year")+
    ylab("Daily Maximum Temperature")

不过,您会注意到数据中缺少几年,我正试图让绘图反映出 x 尺度上的差距。另一个问题是轴上的文本和刻度线。我希望滴答只是观察年而不是 Month.Year 因为月份已经编码在填充中。我试过 scale_x_discrete,但尝试为连续轴提供离散值会吐出一个空白图形和一个错误。我已经满足了我对当天计算机配额的誓言,如果能在这方面得到一点帮助真的很棒。

这造成了巨大的差距,因为每年都有自己的差距,但您可以通过仅将特定年份作为水平参数传递给 factor() 调用来调整这一点。

df$Yr <- factor(df$Yr, levels=1999:2010)

ggplot(df,aes(x=Yr,y=Temp,fill=Month))+
  geom_boxplot(position=position_dodge(1))+
  ylab("Daily Maximum Temperature") +
  scale_x_discrete("Year", drop=FALSE)