我們後臺時常能收到小夥伴們的私信,詢問學習R語言過程中的一些問題【往期 ▏回答讀者系列(一):如何在散點圖中添加擬合曲線?】。
很多問題都是非常好的,所以我們會定期選取具有代表性的讀者提問做出解答,希望這些也能對讀者們有幫助。
同時也鼓勵各位向我們提問,小編會儘快做出回復。
下方是這位讀者的問題:
geom_dotplot()與geom_jitter()作出的圖形都是點(points),因此看上去非常相似,也容易混淆。而geom_jitter()通常用於作散點圖,也可以用於多組間的均數比較。但geom_jitter()主要是為了解決數據重疊的問題。比如,當你的散點圖中,許多點堆積在相同的位置(一樣的數值),因此無法反應數據的真實情況。使用geom_jitter()可以挪動點的位置從而顯示出所有的數據在圖中的位置。首先作一個dotplot(點圖)描述數據的分布情況。library(ggplot2)ggplot(iris, aes(Sepal.Length)) + geom_dotplot() + ggtitle("geom_dotplot()")ggplot(iris, aes(Sepal.Length)) + geom_histogram() + ggtitle("geom_histogram()")ggplot(iris, aes(Sepal.Length)) + geom_density() + ggtitle("geom_density()")1. 從上圖可知,geom_dotplot()其實與直方圖與密度圖非常相似,他們都是用來描述數據的分布情況。但dotplot是以點的形式呈現。
如果你也使用geom_jitter()畫上述的分布圖的話,結果會報錯。ggplot(iris, aes(Sepal.Length)) + geom_jitter() ----Error: geom_point requires the following missing aesthetics: yRun `rlang::last_error()` to see where the error occurred.1. 因為geom_jitter()並不是用來描述數據的分布的,它至少需要兩個數據(x與y)。文章開頭提到,geom_jitter()主要用於解決畫圖中點與點重疊的問題。
畫個圖看看geom_point()與geom_jitter()的區別。
ggplot(iris, aes(Species, Sepal.Length)) + geom_point() + ggtitle("geom_point()")ggplot(iris, aes(Species, Sepal.Length)) + geom_jitter() + ggtitle("geom_jitter()")1. 從上圖可知,Species是分類變量,與geom_point()相比,geom_jitter()可以將重疊的點往左右移動,從而顯示所有的點。
2. 在散點圖(x,y均為連續變量)中,也是一樣的道理。
總的來說,geom_dotplot()與geom_jitter()雖然都是用⚪點來表示樣本,但是本質以及用途卻不相同。讓R語言和統計變得簡單!