前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >绘制让人眼前一亮的美图--你需要这个!

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

作者头像
作图丫
发布2022-03-29 11:39:10
1.3K0
发布2022-03-29 11:39:10
举报
文章被收录于专栏:作图丫

导语

GUIDE ╲

ggthemr为ggplot2提供了近20种主题,可以直接使用,也可以根据需要设置配色,或改变图表细节。

背景介绍

在我们日常的科研绘图中,经常会使用到ggplot2绘图,这也给我们带来很大的方便,但是在设置主题的时候,要想得到一个完美的颜色,还是需要大量的代码去实现,要想实现自由搭配还是比较麻烦的,这时候小编要给大家介绍一个主题配置神器:ggthemr。

ggthemr是发布在github上的开源ggplot插件包,可以方便快捷的配置各种风格的主题,并且改变字体类型、大小,图例、坐标轴、背景等各种元素。

R包的安装

与常规的R包不同,ggthemr没有在发布在CRAN上,因此我们需要使用devtools中的install_github()从github上安装:

代码语言:javascript
复制
devtools::install_github('Mikata-Project/ggthemr')
library(ggthemr)

ggthemr的使用

01

基本用法

只需要设置颜色方案:

代码语言:javascript
复制
##设置主题
ggthemr('dust')

从此以后创建的任何ggplot图片都会应用我们设置的主题。我们可以使用如下命令清除主题并返回到ggplot2的默认设置:

代码语言:javascript
复制
##清除主题
ggthemr_reset()

由于ggplot2函数会存在一些bug,在绘图的时候可能会返回错误(如:颜色名称未知),我们可以通过调用scale_colour_ggthemr_d()函数去设置主题:

代码语言:javascript
复制
ggplot(mtcars, aes(mpg, disp, colour = factor(am))) +
    geom_point() +
    scale_colour_ggthemr_d()

02

主题展示

在ggthemr包中提供了大量主题供我们选择,其中有一些风格比较严肃,比较适合用于正式的文章,还有一些效果看起来比较时尚,可以用作我们做PPT等展示的素材!

03

定制调色板

在ggthemr包中还提供了非常个性化的选择,我们可以通过define_palette()函数制作自己的主题,就像上面的各种调色板一样,这些主题可以传递给ggthemr()。在这里小编展示一个使用随机颜色的(可能很丑)制作的主题的示例:

代码语言:javascript
复制
# 随机颜色不会是白色
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参数主要分为内部和外部两种选择,设置为内部时,图的背景色不会超出图区域。设置为外部时,则会给整个图和背景着色。让我们对比一下看看效果吧!

代码语言:javascript
复制
##内部
ggthemr('earth', type = 'inner')
example_plot
##外部
ggthemr('earth', type = 'outer')
example_plot

05

调整主题

我们可以通过设置参数调整图片的对比度:

代码语言:javascript
复制
##先画一个标准图
ggthemr('dust')
example_plot
##使图片变得更暗
darken_swatch(amount = 0.3)
example_plot

对图片进行校正:

当我们已经确定了一个主题的时候,如果我们想单独对里面的颜色进行微调(互换),swatch()函数就可以实现这个功能,让我们看看前后对比图。

代码语言:javascript
复制
##先画一个初始图片
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

一些应用实例

代码语言:javascript
复制
ggthemr_reset()
dust_theme <- ggthemr('dust', set_theme = FALSE)
example_plot
代码语言:javascript
复制
##加入图例
example_plot + dust_theme$theme
example_plot + dust_theme$theme + dust_theme$scales$scale_fill_discrete()
代码语言:javascript
复制
##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,作图效率立马提升好几个层次。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作图丫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档