R:来自ggplot2的qplot中的错误:缺少参数"env",没有默认值

use*_*246 12 r ggplot2

我正在使用ggplot2中的qplot来绘制R中不同物种分散的种子的距离.当我使用时geom='density',它的效果很好!但我真正想要的是频率/面积图,我得到一个错误,我不知道如何解决.

这有效:

qplot(Dist,data=testx,geom="density",fill=Animal,log=c('x','y'),alpha=I(0.5))
Run Code Online (Sandbox Code Playgroud)

这不起作用:

qplot(Dist,data=testx,geom="area",fill=Animal,log=c('x','y'))

Error in exists(name, envir = env, mode = mode) : 
  argument "env" is missing, with no default
Run Code Online (Sandbox Code Playgroud)

救命?谢谢!

ton*_*nov 8

这个错误的原因(这个消息非常模糊,我同意)是你试图使用geom_area(qplot(geom = "area")大致相同+ geom_area()).虽然geom_density只需要x(x = Dist在您的情况下),但这还不够geom_area,因为它另外使用ymax(对于帮助页面,请参阅链接,指向链接).

以下是密度和频率图的示例,您可以根据数据进行调整:

ggplot(data=diamonds, aes(x=carat, fill=clarity)) + geom_density(alpha=0.5)
ggplot(data=diamonds, aes(x=carat, colour=clarity)) + geom_freqpoly()
Run Code Online (Sandbox Code Playgroud)

您的代码示例不可重现,因此我无法验证以下行,但是

ggplot(data=testx, aes(x=Dist, colour=Animal)) + geom_freqpoly() + 
  scale_x_log10() + scale_y_log10()
Run Code Online (Sandbox Code Playgroud)

可能是你需要的.

  • 别客气!我鼓励你为自己的问题写一个简短的答案,这样任何未来的读者都会看到解决方案. (3认同)

blu*_*e10 8

关于此错误消息,可能有助于指出这是您为直方图使用空数据集时获得的错误消息:

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
Run Code Online (Sandbox Code Playgroud)

不幸的是,在这种情况下,错误消息根本不是很有用.当我第一次遇到这个问题时,花了一些时间来弄清楚我只是偶然得到了一个空的数据框.OP可能有一个不同的问题,但总是很高兴知道这个错误与这个愚蠢的错误有关.