2013-11-15 53 views
0

我正在繪製一系列boxlot以及頂部的點,但是我的顏色圖例將所有符號顯示爲小框。我試過使用override.aes,但問題仍然存在。獎勵積分,如果你能告訴我如何讓r^2很好地出現在標題中。從gplot2中boxplot更改圖例符號

r2df.realtime=subset(r2df,yr>reconyear) 
r2df.sameyr=subset(r2df,yr==reconyear) 
ggplot()+geom_boxplot(data=r2df.realtime,aes(as.factor(yr),r2phvrcn,col='model1'),outlier.shape=3)+ 
    geom_boxplot(data=r2df,aes(x=as.factor(yr),y=r2phv,col='model2'))+ 
    geom_point(data=r2df,aes(x=as.factor(yr),y=r2recon,col='model3'),shape=6)+ 
    geom_point(data=r2df.sameyr,aes(x=as.factor(yr),y=r2phvrcn,col='model4'),shape=6)+ 
    scale_color_manual(values=c('blue','red','green','black'))+ 
    facet_grid(~mth)+ 
    guides(color=guide_legend('Model'),override.aes=list(shape=c(6,6,1,1))) 
    labs(title=paste('Real-time Ensemble of Cross-Validated Skill Scores (',expression(r^2),')',sep='')) 

link to text file with dput(r2df)

+4

請問你能減少你的代碼到什麼是必要的,以顯示問題? – krlmlr

+0

這是問題的複雜性....但我已經刪除了一些軸標籤等。還有什麼不明確的? – Dominik

回答

0

首先,從圖例中刪除箱線圖 「形狀」 你應該添加show_guide=FALSE兩個geom_boxplot()電話。然後你改變圖例中的形狀override.aes=你應該把它放在guide_legend()(在你的嘗試它被放置爲函數guides()函數內的單獨的參數)。

其次,在您的標題調用更改順序功能paste()expression()

ggplot()+ 
    geom_boxplot(data=r2df.realtime,aes(as.factor(yr),r2phvrcn,col='model1'), 
              outlier.shape=3,show_guide=FALSE)+ 
    geom_boxplot(data=r2df,aes(x=as.factor(yr),y=r2phv,col='model2'),show_guide=FALSE)+ 
    geom_point(data=r2df,aes(x=as.factor(yr),y=r2recon,col='model3'),shape=6)+ 
    geom_point(data=r2df.sameyr,aes(x=as.factor(yr),y=r2phvrcn,col='model4'),shape=6)+ 
    scale_color_manual(values=c('blue','red','green','black'))+ 
    facet_grid(~mth)+ 
    guides(color=guide_legend('Model',override.aes=list(shape=c(1,1,6,6))))+ 
    labs(title=expression(paste("Real-time Ensemble of Cross-Validated Skill Scores 
                   (",r^2,")",sep=''))) 
+0

謝謝,但這並不完全讓我想要什麼。我仍然想保留'model1'的boxplot形狀。我想顯示'model2'的一條線,'model3'和'model4'的三角形。 「model1」的'show_guide = T'會導致所有形狀爲箱形圖。我嘗試使用geom_segment而不是geom_boxplot for model2,但無法使其工作。圖中的輸出是相同的,因爲model2只有一個值。 – Dominik