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