結合 ggplot
的幾何圖形與統計轉換可以讓使用者產生各種新穎的圖形,以下幾張圖是以 count
這個統計轉換後,配合不同的幾何圖形所得到的結果。
my.plot <- ggplot(diamonds, aes(carat)) + xlim(0, 3) my.plot + stat_bin(aes(ymax = ..count..), binwidth = 0.1, geom = "area")
my.plot + stat_bin( aes(size = ..density..), binwidth = 0.1, geom = "point", position="identity" )
如果您有一些已經經過統計轉換的資料,只是想要單純將資料畫出來,可以使用 stat_identity
這個統計轉換,它會依據原始資料的類型直接選擇適合幾何圖形來呈現。
ggplot
有一個比較特別的功能就是可以讓不同的圖層有不同的資料來源,可以將相關的幾個資料集畫在一起,例如在使用模型預測資料時,繪製預測值。
library(nlme) model <- lme(height ~ age, data = Oxboys, random = ~ 1 + age | Subject) age_grid <- seq(-1, 1, length = 10) subjects <- unique(Oxboys$Subject) preds <- expand.grid(age = age_grid, Subject = subjects) preds$height <- predict(model, preds)
畫出模型的預測值:
my.plot <- ggplot(Oxboys, aes(age, height, group = Subject)) + geom_line() my.plot + geom_line(data = preds, colour = "#3366FF", size= 0.4)
畫出模型的殘差值,並加入平滑曲線:
Oxboys$fitted <- predict(model) Oxboys$resid <- with(Oxboys, fitted - height) my.plot %+% Oxboys + aes(y = resid) + geom_smooth(aes(group=1))