2011-03-24 99 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