2011-03-24 98 views
4

我正在尝试添加一个形状美学映射到现有的情节,但我收到下面的错误。有没有不同的方式来完成这一点?如果我从函数调用中删除shape=Port,则一切按预期工作。添加形状美学时找不到对象ggplot2的错误

p <- ggplot(data=w, aes(OAD,RtgValInt,color=dt,shape=Port)) + 
    geom_jitter(size=3, alpha=0.75) + 
    scale_colour_gradient(limits=c(min(w$dt), 
      max(w$dt)), 
     low="#9999FF", high="#000066") + 
    geom_point(data=data.frame(OAD=w$OAD[1], 
      RtgValInt=w$RtgValInt[1]), 
     color="red", size=3) 
print(p) 

Error in eval(expr, envir, enclos) : object 'Port' not found 

数据帧w包括以下数据。

Date   Port OAD   RtgValInt dt 
12/31/2010 Grp1 1.463771 1.833333 14974 
12/31/2010 Grp2 1.193307 2.071429 14974 
11/30/2010 Grp1 1.454115 1.833333 14943 
11/30/2010 Grp2 1.127755 2.071429 14943 
10/29/2010 Grp1 1.434965 2.000000 14911 
10/29/2010 Grp2 1.055758 2.071429 14911 
09/30/2010 Grp1 1.441773 2.000000 14882 
09/30/2010 Grp2 1.077799 2.071429 14882 
+0

参见[ggplot找不到对象错误数据](http://stackoverflow.com/q/40391272/903061)以获取更多选项。 – Gregor 2016-11-02 23:31:32

回答

12

由于每个层继承默认AES映射,则需要在使用不同的数据集以抵消在geom_point形状AES:用不同的添加层时

p <- ggplot(data=w, aes(OAD,RtgValInt,color=dt,shape=Port)) + 
    geom_jitter(size=3, alpha=0.75) + 
    scale_colour_gradient(limits=c(min(w$dt), 
     max(w$dt)), 
    low="#9999FF", high="#000066") + 
    geom_point(aes(shape=NULL), data=data.frame(OAD=w$OAD[1], 
     RtgValInt=w$RtgValInt[1]), 
    color="red", size=3) 
+4

或inherit.aes = FALSE,如果我记得正确 – baptiste 2011-03-24 08:24:24

+0

这两个选项都很好 - 谢谢! – user338714 2011-03-24 12:52:46

+0

或者不在整体图的默认设置中设置形状。 – hadley 2011-03-24 13:48:42