R語言可視化 ggplot2—用圖層構建圖像

創建繪圖對象

需要使用ggplot2()函數,兩個主要參數

  • 數據
  • 圖像屬性映射 aes()

通過ggplot創建圖形對象

p <- ggplot(diamonds, aes(carat, price, colour = cut))

圖層

給圖形對象添加一個“點”幾何對象(point geom)就會得到一個散點圖

p <- p + layer(geom = "point")

注意我們是如何用 + 來添加圖層的。該圖層使用了默認的數據集和圖形屬性映射,並且使用了另外兩個可選參數的默認值:統計變換和位置調整。下面的圖層設定列出了更多可選的參數選項。

手動創建圖形對象並添加圖層

p <- ggplot(diamonds, aes(x = carat))
p <- p + layer(geom = "bar", 
geom_params = list(fill = "steelblue"), 
stat = "bin", 
stat_params = list(binwidth = 2))
p

在這裏插入圖片描述

應用“快捷函數”,得到與上例相同的圖形

p + geom_histogram(binwidth = 2, fill = "steelblue")

所有這類快捷函數都有相同的形式——以geom_或者stat_開頭

geom_XXX(mapping, data,.…, stat, position)
stat_XXX(mapping, data,…, geom, position)

其他參數後續內容會說明

下面將展示ggplot()和qplot()的等價用法

在用ggplot創建的圖形對象上添加圖層

ggplot(msleep, aes(sleep_rem/sleep_total, awake)) + geom_point()
# 等價於
qplot(sleep_rem/sleep_total, awake, data = msleep)

在這裏插入圖片描述

也可以給qplot添加圖層

qplot(sleep_rem/sleep_total, awake, data = msleep) + geom_smooth()
# 等價於
qplot(sleep_rem/sleep_total, awake, data = msleep, geom = c("point", "smooth"))
# 等價於
ggplot(msleep, aes(sleep_rem/sleep_total, awake)) + geom_point() + geom_smooth()

在這裏插入圖片描述

例:用不同的數據初始化後添加相同的圖層

圖層是普通的R對象,所以可以存儲到變量裏去,這有利於代碼避繁就簡。例如,一組圖形可以先用不同的數據來進行初始化,然後加上相同的圖層,如果後面想改變圖層,只需要修改一個地方即可。下面的例子創建了一個帶有半透明深藍色迴歸線的圖層。

library(scales)
bestfit <- geom_smooth(method = "lm", se = F, colour = alpha("steelblue", 0.5), size = 2)
qplot(sleep_rem, sleep_total, data = msleep) + bestfit
qplot(awake, brainwt, data = msleep, log = "y") + bestfit
qplot(bodywt, brainwt, data = msleep, log = "xy") + bestfit

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

用%*%添加新的數據集來代替原來的數據集

p <- ggplot(mtcars, aes(mpg, wt, colour = cyl)) + geom_point()
p

在這裏插入圖片描述

mtcars <- transform(mtcars, mpg = mpg^2)
p %+% mtcars

在這裏插入圖片描述

圖形屬性映射

aes函數的參數

aes(x = weight, y = height, colour = age)

這裏我們將x座標映射到weight,y座標映射到heightcolour映射到age。前兩個參數可以省略名字,weightheight會自動匹配到x和y,這和qplot()的用法是一致的。注意,你最好不要使用指定數據集以外的變量(例如diamonds$carat),因爲這樣無法將繪圖所用的數據都封裝到一個對象裏。

也可以使用變量的函數值作爲參數

aes(weight, height, colour = sqrt(age))

在這裏插入圖片描述

圖和圖層

如下例所示,默認的圖形屬性映射可以在圖形對象初始化時設定,或者過後用+修改。

p <- ggplot(mtcars)
summary(p)

p <- p + aes(wt, hp)
summary(p)

在這裏插入圖片描述
在這裏插入圖片描述

使用默認的參數映射來添加圖層

p <- ggplot(mtcars, aes(x = mpg, y = wt))
p + geom_point()

在這裏插入圖片描述

修改圖形屬性。用factor(cyl)修改顏色(上),用disp修改y座標(下)。

p + geom_point(aes(colour = factor(cyl)))
p + geom_point(aes(y = disp))

在這裏插入圖片描述
在這裏插入圖片描述

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