我正在使用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)
救命?谢谢!
这个错误的原因(这个消息非常模糊,我同意)是你试图使用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)
可能是你需要的.
关于此错误消息,可能有助于指出这是您为直方图使用空数据集时获得的错误消息:
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可能有一个不同的问题,但总是很高兴知道这个错误与这个愚蠢的错误有关.