与ggplot& geom_boxplot& geom_smooth

时间:2016-01-25 11:27:19

标签: r ggplot2

我的名字是贾科莫,我只是一个R初学者。 我试图制作一个由两个趋势线覆盖的箱线图,每个我绘制的一个等级。

Google搜索我发现了许多例子,比如这样 ggplot - Add regression line on a boxplot with binned (non-continuous) x-axis 但它对我不起作用。

最后我尝试了两种不同的方式,第一种方式是:

plotSerie <- ggplot(fileIn, aes(y=S1_VH)) +  
  geom_boxplot(aes(x=as.factor(DOY), fill = X2cycles)) +
  geom_smooth(method="loess", se=TRUE, aes(x=as.integer(DOY), color=X2cycles)) +    
  scale_fill_manual(values=c("ShortCycle"= "brown", "LongCycle" = "grey"),                           
                     name="Rice Cycles")+                                                            
  scale_color_manual(values=c("ShortCycle"= "brown", "LongCycle" = "grey"),                          
                    name="Rice Cycles")+                                                             
  labs(x = "DOY", y = "VH")+                                                                         
  theme(axis.text=element_text(size=20),                                                             
        axis.title=element_text(size=20,face="bold"),                                                
        legend.text=element_text(size=20),                                                           
        legend.title=element_text(size=25))+                                                         
  ylim(-24,-14)

专业人士:两个趋势线都正确显示, 缺点:boxplot和趋势线没有重叠

第二种方式是

plotSerie <- ggplot(fileIn, aes(x=factor(DOY), y=S1_VH, fill = X2cycles))+
  geom_boxplot() +
  geom_smooth(method="loess", se=TRUE, aes(group=1, color=X2cycles)) +    
  scale_fill_manual(values=c("ShortCycle"= "brown", "LongCycle" = "grey"),                           
                     name="Rice Cycles")+                                                            
  scale_color_manual(values=c("ShortCycle"= "brown", "LongCycle" = "grey"),                          
                    name="Rice Cycles")+                                                             
  labs(x = "DOY", y = "VH")+                                                                         
  theme(axis.text=element_text(size=20),                                                             
        axis.title=element_text(size=20,face="bold"),                                                
        legend.text=element_text(size=20),                                                           
        legend.title=element_text(size=25))+                                                         
  ylim(-24,-14)                                                                                      

专业人士:boxplot和一个趋势线被正确覆盖, 缺点:只绘制了一条趋势线

你能帮帮我吗? 非常感谢你

2 个答案:

答案 0 :(得分:0)

我解决了这个问题。无论如何,谢谢你。

    plotSerie <- ggplot(fileIn, aes(x=factor(DOY), y=S1_VH, fill = X2cycles))+
  geom_boxplot() +
  geom_smooth(method="loess", se=TRUE, aes(group=X2cycles, color=X2cycles)) +    
  scale_fill_manual(values=c("ShortCycle"= "brown", "LongCycle" = "grey"),                           
                     name="Rice Cycles")+                                                            
  scale_color_manual(values=c("ShortCycle"= "brown", "LongCycle" = "grey"),                          
                    name="Rice Cycles")+                                                             
  labs(x = "DOY", y = "VH")+                                                                         
  theme(axis.text=element_text(size=20),                                                             
        axis.title=element_text(size=20,face="bold"),                                                
        legend.text=element_text(size=20),                                                           
        legend.title=element_text(size=25))+                                                         
  ylim(-24,-14)                                                                                      

答案 1 :(得分:0)

我为我的拖延道歉。我改变了我的脚本,以便在我的情节中使用连续的X.

plotSerie <- ggplot(fileIn, aes(x=DOY, y=S1_VH, fill = pass, group=DOY))+
  geom_boxplot() +
  geom_smooth(method="loess", se=TRUE, aes(group=pass, color=pass)) +    

非常感谢