2017-02-16 5 views
0

Изучите ggplot2 и не понимайте, почему второй набор кода вызывает ошибку. Все, что мне нужно было сделать, это добавить эстетику в команду stat_smooth в третьем наборе кода, и все получилось отлично, но я не понимаю, почему.Модели логистической регрессии в ggplot2

ggplot(df, aes(x=wave.height, y=ship.deploy)) + geom_point() + 
    stat_smooth(method="glm", method.args=list(family="binomial"), se=FALSE) 


    ggplot(data = df) + 
    geom_point(mapping = aes(x = wave.height, y = ship.deploy)) + 
    stat_smooth(method = "glm", method.args = list(family = "binomial"), se = FALSE) 
    Error: stat_smooth requires the following missing aesthetics: x, y 


    ggplot(data = df) + 
    geom_point(mapping = aes(x = wave.height, y = ship.deploy)) + 
    stat_smooth(mapping = aes(x = wave.height, y = ship.deploy),method = "glm", method.args = list(family = "binomial"), se = FALSE) 
+0

Я голосовал, чтобы закрыть вопрос, потому что он не имеет никакого отношения к статистике. – SmallChess

+0

В вашем первом примере вы сопоставляете 'x' и' y' глобально в 'ggplot'. Эта глобальная эстетика переходит к остальным слоям. Во втором примере вы не используете глобальную эстетику, вместо этого отображаете 'x' и' y' только в слое 'geom_point'. Они не передаются другим слоям, поэтому 'stat_smooth' не использует' x' и 'y' эстетику для использования, и вы получаете сообщение об ошибке. – aosmith

ответ

0

только эстетические отображения, определенные на верхнем уровне, ggplot(aes()), унаследованы последующими слоями. Эстетики, указанные в одном слое, geom_point(aes()) применяются только к этому слою.

Чтобы избежать повторного указания одинаковых сопоставлений, поместите их вверху, как в вашем первом коде.

+0

, что имеет смысл, понимайте, спасибо – Jeff

Смежные вопросы