ggplot2(二)

爲圖像添加平滑線

如果僅僅有數據的散點圖,你可能很難看出數據的總體趨勢。在這種情況下,給圖像添加平滑線是很好的選擇。在geom中添加"smooth"便可以輕鬆的完成這項任務。給geom參數設置一列向量可以組合多個幾何圖形元素。

qplot(carat, price, data = diamonds, geom = c("point", "smooth"))

平滑的算法也有很多可供選擇:

method=“loess“:對於較小數據集的默認平滑算法,平滑程度由span參數來進行設定。span=0時線較爲彎曲,span=1時最爲平緩。

qplot(carat, price, data = dsmall, geom = c("point", "smooth"),span = 0.2)
qplot(carat, price, data = dsmall, geom = c("point", "smooth"),span = 1)


由於算法複雜度的原因,對於大的數據集loess並不是十分適用。

method="gam":當數據點大於1000時,這是默認的平滑算法。

library(mgcv)
qplot(carat, price, data = dsmall, geom = c("point", "smooth"),method = "gam", formula = y ~ s(x))


method="lm":用於線性模型。默認爲一條直線,也可以用formula=y~poly(x,2)設置爲二次函數擬合,或者加載splines包用formula=y~ns(x,2),第二個參數表示自由度,自由度越高擬合曲線也就越彎曲。

qplot(carat, price, data = dsmall, geom = c("point", "smooth"),method = "lm")
qplot(carat, price, data = dsmall, geom = c("point", "smooth"),method = "lm", formula = y ~ ns(x,5))

繪製箱線圖和抖動圖:

當一組數據既有分類變量又有連續變量的時候,你可能會對連續變量在不同分類下的變化感興趣,箱線圖和抖動圖是實現這一目的的兩種不同方法。

qplot(color, price / carat, data = diamonds, geom = "jitter",alpha = I(1 / 200))


qplot(color, price / carat, data = diamonds, geom = "boxplot")


直方圖和密度圖:

直方圖和密度圖可以形象的顯示單一變量的分佈規律,但是難以比較不同類之間分佈的區別。

qplot(carat, data = diamonds, geom = "histogram")
qplot(carat, data = diamonds, geom = "density")



對於不同分類間的比較,可以像下面代碼所示加一個外觀參數選項:

qplot(carat, data = diamonds, geom = "density", colour = color)
qplot(carat, data = diamonds, geom = "histogram", fill = color)



柱狀圖:

離散變量的直方圖即柱狀圖,用geom="bar"來設置。

qplot(color, data = diamonds, geom = "bar")
qplot(color, data = diamonds, geom = "bar", weight = carat) +scale_y_continuous("carat")



時間序列分析:

用含有時間數據的economics數據集,做失業率隨時間變化的圖像:

qplot(date, unemploy / pop, data = economics, geom = "line")


觀察失業率與周失業人數中位數之間的關係:

year <- function(x) as.POSIXlt(x)$year + 1900
qplot(unemploy / pop, uempmed, data = economics,geom = "path", colour = year(date)) + scale_area()


分面:

我們已經討論瞭如何利用外觀參數在同一圖中比較不同分類的差異。而分面可以將不同的亞類放在不同的圖中進行比較:

qplot(carat, data = diamonds, facets = color ~ .,geom = "histogram", binwidth = 0.1, xlim = c(0, 3))



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章