最近公众号「生信媛」和「生信宝典」的小伙伴在说ggplot2无法一次性设置所有字体,theme只能设置axis text, title这些,而搞不了geom_text,geom_text必须要手工输入family=XXX来设置,因为不能使用theme来更换,也就是说没办法通过后处理来设定,比较麻烦。 这显然是不对的,后处理必须可以的,一次性满足所有愿望也只是因为没人写个神奇的函数而已。做为专业解决ggplot2各种疑难杂症的我,于是动手写了个set_font的函数。 假设我们有下图: library(ggplot2)d <- data.frame(x="">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系列 Use ggplot2 ggplot2作图5招 ggplot2字体溢出的那点破事 根据GTF画基因的多个转录本结构 如何画类似MEME的注释序列 joyplot:一种波涛汹涌,哦不对,是山峰叠峦的可视化方式 看到这里的才是真爱粉,过去的一个月,坚持每日一更,结果长期在10粉以内增长,给了我很好的理由不用坚持更新,本文将是本周最后一更,从下周开始,实行周二、周四两天更新。 |
|