天天看點

繪制讓人眼前一亮的美圖--你需要這個!

導語

GUIDE ╲

ggthemr為ggplot2提供了近20種主題,可以直接使用,也可以根據需要設定配色,或改變圖表細節。

背景介紹

在我們日常的科研繪圖中,經常會使用到ggplot2繪圖,這也給我們帶來很大的友善,但是在設定主題的時候,要想得到一個完美的顔色,還是需要大量的代碼去實作,要想實作自由搭配還是比較麻煩的,這時候小編要給大家介紹一個主題配置神器:ggthemr。

繪制讓人眼前一亮的美圖--你需要這個!

ggthemr是釋出在github上的開源ggplot插件包,可以友善快捷的配置各種風格的主題,并且改變字型類型、大小,圖例、坐标軸、背景等各種元素。

R包的安裝

與正常的R包不同,ggthemr沒有在釋出在CRAN上,是以我們需要使用devtools中的install_github()從github上安裝:

devtools::install_github('Mikata-Project/ggthemr')
library(ggthemr)           

複制

ggthemr的使用

01

基本用法

隻需要設定顔色方案:

##設定主題
ggthemr('dust')           

複制

從此以後建立的任何ggplot圖檔都會應用我們設定的主題。我們可以使用如下指令清除主題并傳回到ggplot2的預設設定:

##清除主題
ggthemr_reset()           

複制

由于ggplot2函數會存在一些bug,在繪圖的時候可能會傳回錯誤(如:顔色名稱未知),我們可以通過調用scale_colour_ggthemr_d()函數去設定主題:

ggplot(mtcars, aes(mpg, disp, colour = factor(am))) +
    geom_point() +
    scale_colour_ggthemr_d()           

複制

繪制讓人眼前一亮的美圖--你需要這個!

02

主題展示

在ggthemr包中提供了大量主題供我們選擇,其中有一些風格比較嚴肅,比較适合用于正式的文章,還有一些效果看起來比較時尚,可以用作我們做PPT等展示的素材!

繪制讓人眼前一亮的美圖--你需要這個!
繪制讓人眼前一亮的美圖--你需要這個!
繪制讓人眼前一亮的美圖--你需要這個!
繪制讓人眼前一亮的美圖--你需要這個!
繪制讓人眼前一亮的美圖--你需要這個!
繪制讓人眼前一亮的美圖--你需要這個!
繪制讓人眼前一亮的美圖--你需要這個!
繪制讓人眼前一亮的美圖--你需要這個!
繪制讓人眼前一亮的美圖--你需要這個!
繪制讓人眼前一亮的美圖--你需要這個!

03

定制調色闆

在ggthemr包中還提供了非常個性化的選擇,我們可以通過define_palette()函數制作自己的主題,就像上面的各種調色闆一樣,這些主題可以傳遞給ggthemr()。在這裡小編展示一個使用随機顔色的(可能很醜)制作的主題的示例:

# 随機顔色不會是白色
set.seed(12345)
random_colours <- sample(colors()[-c(1, 253, 361)], 10L)

ugly <- define_palette(
  swatch = random_colours,
  gradient = c(lower = random_colours[1L], upper = random_colours[2L])
)

ggthemr(ugly)

example_plot + ggtitle(':(')           

複制

我們可以使用define_palette()定義調色闆的所有元素,包括背景,文本,軸線,色闆和漸變的顔色。

繪制讓人眼前一亮的美圖--你需要這個!

04

布局設定

布局設定可以設定主題中網格線和文本的外觀和位置,可以通過我們個人的喜好對這些進行更改!

繪制讓人眼前一亮的美圖--你需要這個!
繪制讓人眼前一亮的美圖--你需要這個!
繪制讓人眼前一亮的美圖--你需要這個!
繪制讓人眼前一亮的美圖--你需要這個!

Type參數

Type參數主要分為内部和外部兩種選擇,設定為内部時,圖的背景色不會超出圖區域。設定為外部時,則會給整個圖和背景着色。讓我們對比一下看看效果吧!

##内部
ggthemr('earth', type = 'inner')
example_plot
##外部
ggthemr('earth', type = 'outer')
example_plot           

複制

繪制讓人眼前一亮的美圖--你需要這個!
繪制讓人眼前一亮的美圖--你需要這個!

05

調整主題

我們可以通過設定參數調整圖檔的對比度:

##先畫一個标準圖
ggthemr('dust')
example_plot
##使圖檔變得更暗
darken_swatch(amount = 0.3)
example_plot           

複制

繪制讓人眼前一亮的美圖--你需要這個!
繪制讓人眼前一亮的美圖--你需要這個!

對圖檔進行校正:

當我們已經确定了一個主題的時候,如果我們想單獨對裡面的顔色進行微調(互換),swatch()函數就可以實作這個功能,讓我們看看前後對比圖。

##先畫一個初始圖檔
ggthemr('dust')
mpg_plot <- ggplot(mpg[mpg$drv != '4', ], aes(factor(cyl), cty, fill = drv)) + 
  geom_boxplot() + labs(x = 'Cylinders', y = 'City MPG', fill = 'Drive Type') +
  theme(legend.position = 'bottom')
mpg_plot
##通過swatch調節顔色互換
swatch()
to_swap <- swatch()[2:3]
mpg_plot + scale_fill_manual(values = rev(to_swap))           

複制

繪制讓人眼前一亮的美圖--你需要這個!
繪制讓人眼前一亮的美圖--你需要這個!

06

一些應用執行個體

ggthemr_reset()
dust_theme <- ggthemr('dust', set_theme = FALSE)
example_plot           

複制

繪制讓人眼前一亮的美圖--你需要這個!
##加入圖例
example_plot + dust_theme$theme
example_plot + dust_theme$theme + dust_theme$scales$scale_fill_discrete()           

複制

繪制讓人眼前一亮的美圖--你需要這個!
繪制讓人眼前一亮的美圖--你需要這個!
##ggplot2重置預設值
do.call(what = ggplot2::update_geom_defaults, args = dust_theme$geom_defaults$new$bar)
##直方圖
ggplot(diamonds, aes(price)) + geom_histogram(binwidth = 850) + dust_theme$theme           

複制

繪制讓人眼前一亮的美圖--你需要這個!

小編總結

作為一個ggplot2的補充包,ggthemr做了一個初始化函數,在初始化主題的時候,該主題就已經替換掉了ggplot使用的主題方案,而不需要我們去設定scale_()或者theme_()這些參數,這極大友善了我們使用ggplot2,作圖效率立馬提升好幾個層次。