2012-11-28 48 views
1

真的很困难。在geom_boxplot上覆盖geom_point图层

a & b是真实世界中的实际数据集,a是非常大的。我得到一个错误ggplot2不知道如何处理类的数据uneval。我想要做的是将第二个数据集中的单个点叠加到boxplot上,突出显示一个特定样本与宇宙的对比情况。

任何想法我做错了什么?我该如何解决它?

a = data.frame(YTD.Retn=runif(1000,-10,10),sector="a") 
a = rbind(a,data.frame(YTD.Retn=runif(1000,-10,10),sector="b")) 
a = rbind(a,data.frame(YTD.Retn=runif(1000,-10,10),sector="c")) 
a = rbind(a,data.frame(YTD.Retn=runif(1000,-10,10),sector="d")) 
a = rbind(a,data.frame(YTD.Retn=runif(1000,-10,10),sector="e")) 
a = rbind(a,data.frame(YTD.Retn=runif(1000,-10,10),sector="f")) 
a = rbind(a,data.frame(YTD.Retn=runif(1000,-10,10),sector="g")) 

b = data.frame(sector=c("a","b","c","d","e","f","g"),YTD.Retn=c(5,6,7,3,2,-1,-5)) 

p1 =ggplot(a,aes(factor(sector),YTD.Retn,fill=factor(sector))) + geom_boxplot() + 
    scale_fill_discrete(guide=F) + 
    geom_point(b,aes(factor(sector),YTD.Retn)) 

plot(p1) 

回答

3

您需要时调用geom_...()中调用命名参数data。命名参数一般是很好的做法(如果有些时间消耗的话)

p1 =ggplot(data = a, aes(x = factor(sector), y = YTD.Retn, fill=factor(sector))) + 
    geom_boxplot() + 
    scale_fill_discrete(guide=F) + 
    geom_point(data = b, aes(x= factor(sector),y= YTD.Retn)) 

plot(p1) 
+0

当你知道如何时,似乎很容易。谢谢@mnel –