查看原文
其他

一次解决ggplot2所有字体

2017-09-06 Y叔 biobabble

最近公众号「生信媛」和「生信宝典」的小伙伴在说ggplot2无法一次性设置所有字体,theme只能设置axis text, title这些,而搞不了geom_textgeom_text必须要手工输入family=XXX来设置,因为不能使用theme来更换,也就是说没办法通过后处理来设定,比较麻烦。

这显然是不对的,后处理必须可以的,一次性满足所有愿望也只是因为没人写个神奇的函数而已。做为专业解决ggplot2各种疑难杂症的我,于是动手写了个set_font的函数。

假设我们有下图:

library(ggplot2) d <- data.frame(x=rnorm(10), y=rnorm(10), lab=LETTERS[1:10]) p <- ggplot(d, aes(x, y)) +    geom_text(aes(label=lab, color=lab), size=10) +    geom_text(aes(y, x, label=lab), size=3)

那么使用set_font,我们可以一次性设置所有字体包括family, fontface, color, size等。

library(yyplot) g <- set_font(p, family="Times",    fontface="italic", color="firebrick", size=5)

即使你的文本,本来有不同的大小,不同的颜色,不同的字体,全部可以变成一样。当然很多时候并不想所有元素都一致统一,而只是想某些元素统一,比如示例的图中,我们只想改字体,但不想改文字大小和颜色,这是可以的,set_font只改你传入的参数,没指定的元素是不会改变的。

g2 <- set_font(p, family="Arial", fontface="italic")

最后放个全家福。

cowplot::plot_grid(p, g, g2, ncol=3)



这个函数放在yyplot包,不知道是什么的请点击此处,基本上就是个平时画图写着玩的一些小函数。

ggplot2系列



看到这里的才是真爱粉,过去的一个月,坚持每日一更,结果长期在10粉以内增长,给了我很好的理由不用坚持更新,本文将是本周最后一更,从下周开始,实行周二、周四两天更新。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存