从ggplot2中的boxplot更改图例符号

时间:2013-11-15 21:44:34

标签: r ggplot2 legend

我正在绘制一系列箱形图以及顶部的点,但我的颜色图例将所有符号显示为小盒子。我尝试过使用override.aes,但问题仍然存在。如果你能告诉我如何使r ^ 2在标题中出现得很好的话,可以获得奖励积分。

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)

1 个答案:

答案 0 :(得分:0)

首先,要从图例中删除boxplot“shapes”,您应该将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='')))