How to deal with “data of class uneval” error from ggplot2?

前端 未结 3 745
生来不讨喜
生来不讨喜 2020-11-30 23:37

While trying to overlay a new line to a existing ggplot I am getting the following error:

Error: ggplot2 doesn\'t know how to deal with data of class uneval         


        
相关标签:
3条回答
  • 2020-12-01 00:21

    This could also occur if you refer to a variable in the data.frame that doesn't exist. For example, recently I forgot to tell ddply to summarize by one of my variables that I used in geom_line to specify line color. Then, ggplot didn't know where to find the variable I hadn't created in the summary table, and I got this error.

    0 讨论(0)
  • 2020-12-01 00:28

    Another cause is accidentally putting the data=... inside the aes(...) instead of outside:

    RIGHT:
    ggplot(data=df[df$var7=='9-06',], aes(x=lifetime,y=rep_rate,group=mdcp,color=mdcp) ...)
    
    WRONG:
    ggplot(aes(data=df[df$var7=='9-06',],x=lifetime,y=rep_rate,group=mdcp,color=mdcp) ...)
    

    In particular this can happen when you prototype your plot command with qplot(), which doesn't use an explicit aes(), then edit/copy-and-paste it into a ggplot()

    qplot(data=..., x=...,y=..., ...)
    
    ggplot(data=..., aes(x=...,y=...,...))
    

    It's a pity ggplot's error message isn't Missing 'data' argument! instead of this cryptic nonsense, because that's what this message often means.

    0 讨论(0)
  • 2020-12-01 00:30

    when you add a new data set to a geom you need to use the data= argument. Or put the arguments in the proper order mapping=..., data=.... Take a look at the arguments for ?geom_line.

    Thus:

    p + geom_line(data=df.last, aes(HrEnd, MWh, group=factor(Date)), color="red") 
    

    Or:

    p + geom_line(aes(HrEnd, MWh, group=factor(Date)), df.last, color="red") 
    
    0 讨论(0)
提交回复
热议问题