Почему я получаю сообщение об ошибке при попытке работать с ggplot в Julia?
Я вызываю пакет ggplot в Julia, как показано на этом веб-сайте: https://avt.im/blog/2018/03/23/R-packages-ggplot-in-julia . Я использую пакет, показанный на этом веб-сайте, и все работает нормально.
Теперь я строю средние предельные эффекты в Джулии, используя
Effects
упаковка. Я хочу построить это, используя
ggplot
вот данные, которые у меня есть:
df = effects(design, m1)
Вот мой код ggplot и ошибка:
ggplot(df, aes(unemploy, workhours, group = sex, shape= sex, linetype=sex)) +
geom_point(position=position_dodge(width=0.15)) +
geom_errorbar(aes(ymin = lower, ymax = upper),width = 0.1,
linetype = "solid",position=position_dodge(width=0.15))+
geom_line(position=position_dodge(width=0.15))
UndefVarError: sex not defined
Stacktrace:
[1] top-level scope
@ In[131]:1
[2] eval
@ ./boot.jl:360 [inlined]
[3] include_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String)
@ Base ./loading.jl:1116
Я пробовал этот код раньше в R на том же фрейме данных, и он работал нормально, поэтому я думаю, проблема в том, что ggplot не считывает данные должным образом. Может ли кто-нибудь помочь мне обойти эту проблему?
1 ответ
Ваша ссылка фактически объясняет это в этом небольшом фрагменте:
ggplot(d, aes(x=:x,y=:y)) + geom_line()
Обратите внимание, что функция aes использует символы Джулии, такие как :x, для ссылки на столбцы фрейма данных.
В вашей линии
aes(unemploy, workhours, group = sex, shape= sex, linetype=sex)
, обрабатывается как любая другая переменная в Julia, в частности, Джулия пытается найти существующую переменную в коде и объекте, на который она ссылается. Он не был найден в вашем коде, поэтому
UndefVarError
.
Нестандартные оценочные гранты R's
aes
способность видеть
group=sex
и лечить
sex
как имя вместо того, чтобы пытаться оценить его. Это немного похоже на то, как макросы Джулии работают с невычисленными выражениями до этапа компиляции, но R имеет совсем другой стиль.