具有连续比例的boxplot的ggplot多因子级分组

sla*_*ias 2 r categories ggplot2

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

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)
Run Code Online (Sandbox Code Playgroud)

我想要的视觉及其相应的代码如下:

在此输入图像描述

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

但是,您会注意到,数据中缺少了几年,而我正在尝试使该图表反映出x范围内的差距.另一个问题是轴上的文本和刻度线.我希望刻度只是观察年而不是月份.因为月份已经在填充中编码.我尝试过scale_x_discrete,但试图为连续轴提供离散值会吐出空白图和错误.我已经满足了当天对计算机配额的咒骂,在这方面获得一些帮助真的很棒.

小智 5

这会产生巨大的差距,因为每年都有自己的差距,但你可以通过只将特定年份作为factor()调用的level参数来调整.

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)
Run Code Online (Sandbox Code Playgroud)