Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
523 views
in Technique[技术] by (71.8m points)

r - Object not found error with ggplot2 when adding shape aesthetic

I am attempting to add a shape aesthetic mapping to an existing plot but am receiving the error below. Is there a different way to accomplish this? If I remove shape=Port from the function call, everything works as expected.

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

The data frame w includes the data below.

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
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Since every layer inherits the default aes mapping, you need to nullify the shape aes in geom_point when you use different dataset:

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)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...