R: ошибка в qplot из ggplot2: отсутствует аргумент "env", без значения по умолчанию
Я использую qplot из ggplot2 для расчета расстояний семян, разбросанных разными видами в R. Когда я использую geom='density'
, он работает просто отлично! Но то, что я действительно хочу, это график частоты/области, для которого я получаю ошибку, я не знаю, как обращаться.
Это работает:
qplot(Dist,data=testx,geom="density",fill=Animal,log=c('x','y'),alpha=I(0.5))
Это не работает:
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
Помощь? Спасибо!
Ответы
Ответ 1
Причина этой ошибки (сообщение довольно неясное, я согласен) заключается в том, что вы пытаетесь использовать geom_area
(qplot(geom = "area")
примерно такая же, как + geom_area()
). В то время как geom_density
требует только x
(x = Dist
в вашем случае), этого недостаточно для geom_area
, поскольку он дополнительно использует ymax
(для страниц справки, см. this, который ссылается на this).
Здесь приведен пример плотности и частотных графиков, которые вы можете настроить для своих данных:
ggplot(data=diamonds, aes(x=carat, fill=clarity)) + geom_density(alpha=0.5)
ggplot(data=diamonds, aes(x=carat, colour=clarity)) + geom_freqpoly()
Пример вашего кода не reproducible, поэтому я не могу проверить следующую строку, но
ggplot(data=testx, aes(x=Dist, colour=Animal)) + geom_freqpoly() +
scale_x_log10() + scale_y_log10()
может быть тем, что вам нужно.
Ответ 2
Что касается этого сообщения об ошибке, это может указывать на то, что это сообщение об ошибке, которое вы получаете, когда используете пустой набор данных для гистограммы:
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
К сожалению, сообщение об ошибке в этом случае не очень полезно. Когда я впервые столкнулся с этой проблемой, мне потребовалось некоторое время, чтобы понять, что я просто случайно попал в пустой кадр данных. У ОП, вероятно, была другая проблема, но всегда хорошо знать, что эта ошибка связана с этой глупой ошибкой.