knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/" )
融數基地 DD Story Hub 的圖表風格化套件,輕易地讓我們製作出 DD 風格的 ggplot2 圖表!
此套件的製作主要參考了bbplot 套件,但我們除了主題風格外,也一併把顏色風格加入在套件中,並優化一部分 bbplot
原有的程式寫法。
ddplot
?安裝最新的 ddplot
開發版本:
if (!requireNamespace("remotes")) install.packages("remotes") remotes::install_github("DD-Story-Hub/ddplot")
ddplot
圖表字體為 Noto Sans TC 的 Regular, Medium 和 Bold,如果電腦還沒有這個字體,可以透過連結下載安裝👍
library(ggplot2) library(ddplot)
dd_style()
dd_style()
是主題風格 function,只需要 +
上這個 funciton,ggplot 馬上就可以變成我們自己所定義的主題風格!
df <- data.frame(dose = c("A", "B", "C"), len = c(10, 20, 30)) p <- ggplot(data = df, aes(x = dose, y = len)) + geom_bar(stat = "identity", width = 0.5) + labs(title = '有點普通的長條圖', subtitle = 'ggplot2 中最普通的長條圖', caption = '資料來源:DD Story Hub') + dd_style() p
什麼?dd_style()
看起來跟 ggplot2
中內建的 theme_minimal()
超級相似啊!為什麼還要自己寫一個呢?沒錯!看起來很相似,但實際上它其實做了很多事:
這些調整總共需要寫上60行 code,現在只需要1行搞定😊,而且它非常彈性,如果你想要再依照其他特殊情況做細微調整,都可以透過 theme()
做微調!例如我想把長條圖 x,y 軸調換方向,但並不想要水平格線(更多的 theme()
設定可以參考 ggplot2官方文件):
p + coord_flip() + theme(panel.grid.major.y = element_blank())
dd_cols()
& dd_pal()
顏色是圖表中非常重要的視覺元素之一,所以既然要製作風格化,一定是少不了顏色,這也是 bbplot
套件 中沒有製作到的部分。雖然我們目前的圖表色盤並不多,但已經挑選出五種適合圖表的主要顏色,並以這五種顏色為延伸去變換搭配(DD 圖表色盤)。
而在 ddplot
中提供了2個 function 可以直接選擇顏色,分別是可以選擇顏色的 dd_cols()
以及選擇色盤的 dd_pal()
,:
# 最深的藍色 dd_cols('blue500') #> blue500 #> "#1f85ad" # 最淺的藍色 dd_cols('blue100') #> blue500 #> "#1f85ad" # 主要5色的色盤 dd_pal('main5')(5) #> [1] "#0B967D" "#1F85AD" "#CC6525" "#DBAD29" "#F25E86" # 類別5色的色盤 dd_pal('category5')(5) #> [1] "#0B967D" "#ACD5C9" "#89B4CD" "#F0CD84" "#DC8350" # 粉紅5色的色盤 dd_pal('pink5')(5) #> [1] "#F25E86" "#F9829D" "#FEA2B4" "#FFC2CD" "#FFE1E6"
這兩個 function 可以讓我們在其他需要用到這些顏色的情況下,以語義化的方式簡單地去選擇DD圖表顏色,像是如我想在 ggplo2
中更換 單類 圖表的顏色,我們通常只能在 aes()
中設定 fill
or color
:
ggplot(data = df, aes(x = dose, y = len)) + geom_bar(stat = "identity", width = 0.5, fill = dd_cols('green400')) + labs(title = '有點普通的長條圖', subtitle = 'ggplot2 中最普通的長條圖', caption = '資料來源:DD Story Hub') + dd_style()
scale_color_dd()
& scale_fill_dd()
scale_*_dd()
系列的 function 的使用情境是,如果我們想對 多類 變數做顏色風格化,就會需要它們,主要有4個參數可以進行設定:
palette
: Character
,選填,選擇你想要使用的色盤,默認值是"main5"
discrete
: Boolean
,選填,你的變數是類別變數還是連續變數,默認值是TRUE
reverse
: Boolean
,選填,要不要把色盤的順序顛倒過來,默認值是FALSE
manual.pick
: Vector
,可以手動挑選 選定色盤中的顏色,默認值是NULL
(EX: c(1, 3, 5) or c('green500', 'blue500', 'yellow500')
)使用方式也非常簡單:
ggplot(iris, aes(Sepal.Width, Sepal.Length, color = Species)) + geom_point(size = 1) + scale_color_dd() + dd_style() + labs(title="iris 資料集真的超讚", subtitle = "怎麼用都用不膩 XD", caption = "資料來源:Fisher, R. A. (1936) Annals of Eugenics, 7, Part II, 179–188.")
此時我們自動給的顏色中,粉紅色和橘色分常接近,想要進行調整,這時就可以用到 manual.pick
這個參數:
ggplot(iris, aes(Sepal.Width, Sepal.Length, color = Species)) + geom_point(size = 1) + scale_color_dd() + dd_style() + labs(title="iris 資料集真的超讚", subtitle = "怎麼用都用不膩 XD", caption = "資料來源:Fisher, R. A. (1936) Annals of Eugenics, 7, Part II, 179–188.")
finalise_dd_plot()
經歷千辛萬苦的資料分析,找出對的視覺化方式,終於要到把圖表放入文章中分享的階段了,最後一步可以使用 finalise_dd_plot()
來做這件事情,廢話不多說,直接來看它有什麼魔法!
p <- ggplot(data = df, aes(x = dose, y = len)) + geom_bar(stat = "identity", width = 0.5, fill = dd_cols('green400')) + labs(title = '有點普通的長條圖', subtitle = 'ggplot2 中最普通的長條圖', caption = '資料來源:DD Story Hub') + dd_style() finalise_dd_plot( plot = p, # ggplot2 圖表物件 path = 'final_plot.png', # 要儲存的路徑,檔名可以自訂 width.px = 720, # 寬度,建議至少 600 height.px = 640 # 高度,建議至少 600 )
這個 function 做了幾件事情:
謝謝你看到這邊,我們的 Publication Ready 的圖表在此大功告成了🎉,如果有任何開發上的建議或是問題,歡迎到 issue 留言~
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.