(數據科學學習手札55)利用ggthemr來美化ggplot2圖像

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

相關文章
相關標籤/搜索