ggplot2主题专栏02:时尚又商业范儿十足的ggthemr扩展包

【简说基因】ggplot2 是一种面向数据的绘图系统,可以先进行数据相关的绘图以探索数据,最后呈现结果时,再通过主题控制所有非数据元素。

ggthemr 是一个 ggplot2 的主题扩展包,其设计理念是:你只需设置主题,然后就可以忘记它,无需改变任何现有代码。主题有几个部分:

  • 背景、坐标轴、网格线、文字等的颜色调色板。

  • 坐标轴线和网格线的布局。

  • 图形和周围元素之间的间距(即轴标题到轴线等)。你可以设置间距来确定绘图是紧凑还是分散。

  • 文字大小。

ggthemr 提供许多预设的调色板和布局,并且可以创建自己的颜色方案。

安装

这个包目前还处于开发过程中,可以通过 devtools 下载:

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

用法

ggthemr(
  palette = "dust",
  layout = "clear",
  spacing = 1,
  text_size = 12,
  type = "inner",
  line_weight = 0.5,
  set_theme = TRUE
)

只需要设置颜色方案:

ggthemr('dust')

就这样,你之后创建的所有 ggplot2 图形都将应用该主题。这是因为 ggthemr 在设置主题时做了三件事情:

  1. 使用 ggplot2::theme_set() 函数将默认的 ggplot2 主题更新为指定的 ggthemr 主题。

  2. 使用 ggplot2::update_geom_defaults() 函数修改所有几何图元的美学默认值。

  3. 为全局环境中所有不同的标度创建函数。

你可以使用以下命令清除主题,使画图环境恢复成 ggplot2 的默认设置:

ggthemr_reset()

调色版

flat

library(ggplot2)
library(ggthemr)

p = ggplot(mpg, aes(class, fill = drv)) +
  geom_bar(width = 0.7) +
  theme(legend.position = "top")

ggthemr("flat")
p
6dd86c222b657d8043be6834935f0ac4.png

flat dark

ggthemr("flat dark")
p
5790739e38a6566f96fa3b6dbb77d0e7.png

camouflage

ggthemr("camouflage")
p
58dc1d23ce0055ae3b5a4c53e31fafc3.png

chalk

ggthemr("chalk")
p
23987f949a8acc9160ec67ea3e56b066.png

copper

ggthemr("copper")
p
fd92d7c599029c53a99f647839f20f5c.png

dust

ggthemr("dust")
p
9856e0923c0e274d80899ef924ae0bdd.png

earth

ggthemr("earth")
p
c8df48adcabb05809559189e726f93d4.png

fresh

ggthemr("fresh")
p
04d429c80260881d3530e4a244fc9b35.png

grape

ggthemr("grape")
p
a1c42105d792d8224ee40b1e5adfd667.png

grass

ggthemr("grass")
p
22fcf73ce47d64fd228aab2fc79ed775.png

greyscale

ggthemr("greyscale")
p
d804facac89d1b8722168afc045e18ea.png

light

ggthemr("light")
p
4b6d5a58f9714e776921e09ebedbba3e.png

lilac

ggthemr("lilac")
p
c2319c696f1259d682c30c0630045741.png

pale

ggthemr("pale")
p
d9726ea3a991765a81d009e2f6339da1.png

sea

ggthemr("sea")
p
c08392b69fe1c4dd60037c690288a027.png

sky

ggthemr("sky")
p
e0437074ac3430fad76aabddb6bf9e8a.png

solarized

ggthemr("solarized")
p
bac663f8b25a366e3bc94c032a958d8e.png

定制调色板

可以通过define_palette()函数可创建自己的主题,这些主题可以像上面的任何调色板一样传递给 ggthemr()。例如:

# Random colours that aren't white.
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)
p
063455651bb1bb7557177e4f49368c8c.png

布局

主题的布局控制轴、网格线和文本的外观和位置。有些人喜欢主网格线和次网格线,有些人不喜欢或介于两者之间。

Clear (默认)

ggthemr('flat', layout = "clear")
p
b23284f2958451aa29074dc0bbefb73c.png

Clean

ggthemr('flat', layout = "clean")
p
e1c1bf0598de6c98a4d07973b405878c.png

Minimal

ggthemr('flat', layout = "minimal")
p
4735a4c4ac428a69ae29605670c738f2.png

Plain

ggthemr('flat', layout = "plain")
p
fbe9a49f776dd83be4c9d81a4d37e43c.png

Scientific

ggthemr('flat', layout = "scientific")
p
add655e41cfd5a84df0bbf014ae98568.png

间距

绘图边距和轴标题与线之间的间距等由间距参数控制。较低的值将使绘图更紧凑,较高的值将使元素之间有更多空白。下面的图中,间距分别设置为 0、1 和 2 进行比较。

间距为 0

ggthemr('flat', spacing = 0)
p
813aa37aea954d7579fb5b67b3e98d53.png

间距为 1

ggthemr('flat', spacing = 1)
p
4773360bec65c830e4e26203a4c2c13d.png

间距为 2

ggthemr('flat', spacing = 2)
p
efc7e3a640eddffb5edaa0d80313b742.png

类型

type参数可以设置为下面 2 个之一:

  • inner: 绘图的背景颜色将不会延伸超过绘图区域。

  • outer:图形的整个区域都会着色。

ggthemr('solarized', type = "inner")
p
3ef4ad6cfaf87d5e32e629b6252338c6.png
ggthemr('solarized', type = "outer")
p
3a219b5f2add8d22357fbba1240cc030.png

调整主题

有一些函数可以用来调节图形的明暗程度:

  • darken_swatch() / lighten_swatch(): 调暗/调亮样本颜色。

  • darken_gradient() / lighten_gradient(): 调暗/调亮渐变颜色。

  • darken_palette() / lighten_palette(): 调暗/调亮所有颜色。

调暗:

ggthemr('solarized', type = "outer")

darken_palette(amount = 0.5)
p
f9289a9ff26eb3e2eb48bde2c5f0181e.png

调亮:

ggthemr('solarized', type = "outer")

lighten_palette(amount = 0.5)
p
70af09c19248ddc0b04e715fb0e5f284.png

调整图形

设置主题后,有时候需要对图形做一些微小调整。比如,可以通过 swatch() 函数获得当前调色板中的所有颜色:

ggthemr('solarized', type = "outer")

swatch()
## [1] "#073642" "#268bd2" "#dc322f" "#2aa198" "#b58900" "#6c71c4" "#d33682"
## attr(,"class")
## [1] "ggthemr_swatch"

如果要调换填充色的顺序:

to_swap = swatch()[2:4]
p + scale_fill_manual(values = rev(to_swap))
c9ae61873e258210525b515cd3dec9a3.png
参考资料:

https://github.com/Mikata-Project/ggthemr

专栏文章:

ggplot2 主题专栏 01:内置主题和 ggthemes 扩展包 

——————END——————

关注公众号:简说基因,阅读更多生信好文。

如果你有数据分析需求,欢迎与我们合作:

79cf8cebe28890bcbc36856d9223cf02.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值