天天看点

绘制让人眼前一亮的美图--你需要这个!

导语

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,作图效率立马提升好几个层次。