其他
一次解决ggplot2所有字体
最近公众号「生信媛」和「生信宝典」的小伙伴在说ggplot2无法一次性设置所有字体,theme
只能设置axis text, title这些,而搞不了geom_text
,geom_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粉以内增长,给了我很好的理由不用坚持更新,本文将是本周最后一更,从下周开始,实行周二、周四两天更新。