R: error in qplot from ggplot2: argument “env” is missing, with no default

后端 未结 2 1901
梦谈多话
梦谈多话 2021-01-17 12:42

I am using qplot from ggplot2 to plot the distances of seeds dispersed by different species in R. When I use geom=\'density\', it works just fine! But what I re

相关标签:
2条回答
  • 2021-01-17 12:55

    Regarding this error message it might help to point out that this is the error message you get when you use an empty data set for a histogram:

    df <- data.frame(testx = rnorm(0))
    p <- ggplot(df, aes(x=testx)) +
      geom_histogram()
    plot(p)
    
    Error in exists(name, envir = env, mode = mode) : 
      argument "env" is missing, with no default
    

    Unfortunately, the error message is not very helpful at all in this case. When I first ran into this problem it took me some time to figure out that I just accidentally had ended up with an empty data frame. The OP probably had a different problem, but it is always good to know that this error is connected to this stupid mistake.

    0 讨论(0)
  • 2021-01-17 13:16

    The reason for that error (the message is quite obscure, I agree) is that you are trying to use geom_area (qplot(geom = "area") is roughly the same as + geom_area()). Whereas geom_density only requires x (x = Dist in your case), this is not enough for geom_area, as it additionally uses ymax (for help pages, see this, which links to this).

    Here's an example of density and frequency plots which you may adjust for your data:

    ggplot(data=diamonds, aes(x=carat, fill=clarity)) + geom_density(alpha=0.5)
    ggplot(data=diamonds, aes(x=carat, colour=clarity)) + geom_freqpoly()
    

    Your code sample is not reproducible, so I cannot verify the following line, but

    ggplot(data=testx, aes(x=Dist, colour=Animal)) + geom_freqpoly() + 
      scale_x_log10() + scale_y_log10()
    

    may be what you need.

    0 讨论(0)
提交回复
热议问题