2016-01-25 70 views
0

我的名字是Giacomo,我只是一個R初學者。 我正試圖製作一張由兩條趨勢線覆蓋的箱形圖,一個用於繪製每個課程。ggplot&geom_boxplot的老問題&geom_smooth

使用谷歌搜索我發現很多例子,像這樣 ggplot - Add regression line on a boxplot with binned (non-continuous) x-axis 但它不適用於我。

在我tryied兩種不同的方式結束時,第一個是:

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) 

優點:無論是趨勢線被正確地示出, 缺點:箱線圖和趨勢線不overlayied

第二種方法是

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)                      

優點:箱線圖和一個趨勢線被正確overlayied, 缺點:只有一個趨勢線繪製

你能幫我嗎? 非常感謝你

+0

什麼在'fileIn' – mtoto

+2

1.請發表_minimal,自contained_例子。 2.請閱讀手冊('?geom_boxplot')。 「只要你提供一個分組變量,你也可以使用連續x的盒子圖。」 – Henrik

+0

@亨利克:非常感謝。我仔細閱讀手冊,但我是一個初學者,我無法解決我的問題(現在)。 fileIn是我的數據框的名稱。我怎樣才能附加這個文件,或者我怎樣才能爲你提供這個文件?再次謝謝 – ilFonta

回答

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

正如已經在[您發佈的文章中指出的](http://stackoverflow.com/questions/21296789/ggplot-add-regression-line-on-a-boxplot-with-binned-non-continuous-x-axis)「_it is a stunningly bad idea_」and「_can be misleading_」to add a smoother when x軸是離散的。我相信,使用'?geom_boxplot'中描述的方法連續使用boxlot,會更好。 – Henrik

+0

感謝您的反饋。祝你好運! – Henrik

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

非常感謝您