2017-02-16 170 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

在第一個示例中,您在'ggplot'中全局映射'x'和'y'。這些全球美學傳遞到其餘層次。在第二個例子中,你不使用全局美學,而只是在'geom_point'圖層中映射'x'和'y'。這些不會傳遞給其他圖層,因此'stat_smooth'沒有'x'和'y'美學用途,並且會出現錯誤。 – aosmith

回答

0

只有在頂層指定的審美映射ggplot(aes())被後續圖層繼承。在單層中指定的美學,geom_point(aes())僅適用於該層。

爲了避免重新指定相同的映射,請將它們放在頂部,就像在第一個代碼中一樣。

+0

這是有道理的,理解,謝謝 – Jeff