如何用ggplot在boxplot中包含传说中的平均符号?

时间:2014-11-05 11:40:15

标签: r ggplot2 legend boxplot

我希望在图例中包含平均符号和方框符号。所以我的传奇应该包括“曝光1,曝光2,曝光3”,还包括单词mean和它的符号。如何在R?

中使用ggplot来做到这一点

这是我用来制作boxplot的代码:

library(ggplot2)
mydata <- read.csv("~/mydata.csv")
bp<-ggplot(mydata,aes(x=Category,y=MeanValues,,fill=as.factor(Category))) + geom_boxplot()
bp+labs(x = NULL, y = "Result")+ theme_bw()+stat_summary(fun.y = mean, geom = "point",shape = 19, size = 3,show_guide = FALSE)+theme(legend.position="top")+ guides(fill=guide_legend(title=NULL))+ theme(axis.title.y = element_text(size=20, colour = rgb(0,0,0)),axis.text.y = element_text(size=12, colour = rgb(0,0,0)),axis.text.x = element_text(size=12, colour = rgb(0,0,0)))+scale_y_continuous(limits = c(0, 1800), breaks = 0:1800*200)

数据位于https://my.cloudme.com/josechka/mydata

上面的代码生成一个箱形图,其中包含方框内的平均值。但是,图例仅包含类别的符号。我需要的是在图例中添加框内的后点代表每个类别的平均值。有可能吗?

1 个答案:

答案 0 :(得分:3)

您可以添加geom_point,其中aes分别定义为''mean'',从而创建新的图例。使用默认值时,这将绘制所有单个数据点,但将alpha设置为零会使点在图中不可见,而使用override.aes时,点符号将显示在图例中。

bp<-ggplot(mydata,aes(x=Category,y=MeanValues,,fill=as.factor(Category))) + 
  geom_boxplot()
bp+ labs(x = NULL, y = "Result")+ theme_bw()+
  stat_summary(fun.y = mean, geom = "point",shape = 19, size = 3,show_guide = FALSE)+
  theme(legend.position="top")+ guides(fill=guide_legend(title=NULL))+ 
  theme(axis.title.y = element_text(size=20, colour = rgb(0,0,0)),axis.text.y = element_text(size=12, colour = rgb(0,0,0)),axis.text.x = element_text(size=12, colour = rgb(0,0,0)))+
  scale_y_continuous(limits = c(0, 1800), breaks = 0:1800*200)+
  geom_point(aes(shape = "mean"), alpha = 0)+  # <-- added this line of code and next
  guides(shape=guide_legend(title=NULL, override.aes = list(alpha = 1)))

enter image description here