1、簡介git
R中的ggplot2是一個很是強大靈活的數據可視化包,熟悉其繪圖規則後即可以自由地生成各類可視化圖像,但其默認的色彩和樣式在不少時候不免有些過於樸素,本文將要介紹的ggthemr包專門針對原生ggplot2圖像進行美化,掌握它以後你就能夠創做出更具特點和美感的數據可視化做品。github
2、基礎內容
app
2.1 安裝函數
不一樣於常規的R包,ggthemr並無在CRAN上發佈,所以咱們須要使用devtools中的install_github()直接從github上安裝它,參照github上ggthemr的項目說明頁:學習
library(devtools) install_github('cttobin/ggthemr')
筆者在遵循上述步驟時不太順利,遇到了以下錯誤:字體
不過不用擔憂,按照上述的錯誤提示,咱們打開對應目錄,找到了對應的壓縮包:spa
實際上咱們經過上述語句已經將ggthemr的壓縮包下載到本地如上圖所示,因此咱們能夠很容易地使用手動安裝本地壓縮包的形式來完成ggthemr的安裝(注意要吧.tar格式改成.tar.gz格式,我想這多是install_github()安裝失敗的緣由):code
通過上述步驟咱們便完成了ggthemr的安裝準備工做;orm
2.2 傻瓜式用法blog
在我以前寫得某篇文章中使用過Python中matplotlib.pyplot.style,僅僅使用style.use()這個語句,即可傻瓜式地載入各類精美的自適應繪圖主題,在ggthemr中也有相似的功能,咱們在利用ggplot2建立圖像的語句以前,加上ggthemr('主題名稱'),即可簡單套用多種內建主題,下面是幾個簡單的例子:
rm(list=ls()) library(ggplot2) library(ggthemr) data(mpg) data <- mpg #chalk風格 ggthemr('chalk') p1 <- ggplot(data=data, aes(displ, hwy))+ geom_point(mapping = aes(shape=factor(cyl)))+ geom_smooth(mapping = aes(displ,hwy,colour=factor(cyl))) print(p1)
#dust風格 ggthemr('dust') p2 <- ggplot(data=data, aes(displ, hwy))+ geom_point(mapping = aes(shape=factor(cyl)))+ geom_smooth(mapping = aes(displ,hwy,colour=factor(cyl))) print(p2)
#flat風格 ggthemr('flat') p3 <- ggplot(data=data, aes(displ, hwy))+ geom_point(mapping = aes(shape=factor(cyl)))+ geom_smooth(mapping = aes(displ,hwy,colour=factor(cyl))) print(p3)
而官方文檔中提到能夠用ggthemr_reset()來恢復ggplot2默認風格,但筆者通過實踐發現這個函數並不能完全抹除以前施加的主題模式,所以這裏不細說,讀者們能夠自行嘗試;
3、自定義主題
儘管ggthemr內建了不少風格迥異的主題,有的過於花哨,有的又過於商務硬朗,除了直接套用這些主題,咱們還能夠本身建立新的主題以加入本身對構圖的想法:
3.1 Palettes(調色板)
palette決定了圖像中全部元素的顏色,包括全部圖層、背景、網格線等,而swatch則專門用於控制圖層元素的配色方案,咱們使用define_palette()來構造自定義調色方案,其主要參數以下:
swatch:一個顏色向量,用於定義圖層元素的配色方案(要注意圖像中須要用到的色彩數量要小於等於swatch的向量長度,不然會報錯)
gradient:一個長度爲2的向量,lower位置和upper位置用於控制梯度色彩的上下限
background:設置背景色彩
text:設置文本部分的字體顏色
line:設置座標軸顏色
gridline:控制網格線的顏色
下面咱們自定義一個色彩簡單的主題:
demo <- define_palette( swatch = c('black', 'red', 'green', 'blue', 'brown', 'purple', 'yellow'), gradient = c(lower = 'red', upper = 'green') ) ggthemr(demo)
下面來看看應用上述主題以後的圖像效果:
rm(list=ls()) library(ggplot2) library(ggthemr) data(mpg) data <- mpg demo <- define_palette( swatch = c('black', 'red', 'green', 'blue', 'brown', 'purple', 'yellow'), gradient = c(lower = 'red', upper = 'green') ) ggthemr(demo) p <- ggplot(data=data, aes(displ, hwy))+ geom_point(mapping = aes(shape=factor(cyl)))+ geom_smooth(mapping = aes(displ,hwy,colour=factor(cyl))) print(p)
由於咱們的demo主題中還設置了色彩梯度,下面咱們繪製密度圖(此例來自個人(數據科學學習手札38)ggplot2基本圖形簡述):
data <- data.frame(matrix(rnorm(200),nrow=100)) p <- ggplot(data, aes(x = X1, y = X2)) + stat_density2d(aes(fill = ..density..), geom = "raster", contour = F) p
能夠看到,密度圖中色彩在預設的紅色與綠色之間過渡;
3.2 ggthemr()的其餘關鍵參數
前文中咱們使用函數ggthemr()來掛載主題,而除了最關鍵的主題參數以外,ggthemr()還有若干控制其餘圖像樣式的參數,以下:
layout:用於網格線樣式,有clean、clear、minimal、plain、scientific可選,默認clear
spacing:用於控制圖像在圖牀上的緊湊程度,越高意味着圖像被擠壓得越嚴重,默認1.6,下面分別爲0,1,2時的示例:
text_size:用於控制文本部分字體大小,默認12
type:用於控制背景區域填充的形式,當'inner'時以下:
當設置爲'outer'時以下:
line_weight:設置座標軸和網格線的寬度,默認0.5
set_theme:邏輯型變量,控制是否啓動palette傳入的主題,默認爲TRUE
3.3 微調圖像對比度
ggthemr中十分貼心地提供了調節圖像對比度的函數,具體以下:
darken_swatch()
/ lighten_swatch()
: 暗化或亮化全部圖形元素的對比度
darken_gradient()
/ lighten_gradient()
: 暗化或亮化全部梯度元素的對比度
darken_palette()
/ lighten_palette()
: 暗化或亮化全部元素的對比度
下面是簡單的示例:
rm(list=ls()) library(ggplot2) library(ggthemr) data(mpg) data <- mpg ggthemr('chalk') p1 <- ggplot(data=data, aes(displ, hwy))+ geom_point(mapping = aes(shape=factor(cyl)))+ geom_smooth(mapping = aes(displ,hwy,colour=factor(cyl))) print(p1)
下面咱們來分別調低和調高全局色彩對比度:
darken_palette(amount = 0.5) print(p1)
lighten_palette(amount = 0.5) print(p1)
以上就是本文的所有內容,若有筆誤望指出。
參考資料:https://github.com/cttobin/ggthemr