250- 明明ggplot出了图,但不让保存PDF,怎么办?
刘小泽写于2021.7.15 遇到一个画图的小问题
起因
今天画了几个GO富集分析的气泡图,然后想组合在一起,并且导出为pdf
一个很简单的需求,我选择用list保存所有的图片对象,然后patchwork
进行组合
如果你还不会用,那么看花花之前写的: 大佬新包patchwork:可能是迄今为止最优秀的拼图包
画图代码这里不赘述,有太多的教程写过如何去画气泡图,而且这也不是今天的重点
当我批量得到了6个气泡图对象后,进行组合:
> length(p_lst)
[1] 6
p = wrap_plots(p_lst)+ plot_layout(ncol = 3) +
plot_annotation(tag_levels = 'a')
> class(p)
[1] "patchwork" "gg" "ggplot"
理论上,下一步直接ggsave
即可,但问题来了。。。
问题
可以保存png或者其他图片格式,但是就是不让我保存pdf
另外发现了:
ggsave
的默认文件名参数是filename
,但是这里输入file
依然可以
搜索报错信息:
竟然第一条就被搜到了:https://github.com/thomasp85/ggraph/issues/152
看了踩坑的人应该也不少
报错原因大概是:某个函数使用了一种字体,但是这个字体ggsave
又在当前环境中找不到
解决
既然字体找不到,那么就导入我们电脑的字体咯:
# 这个代码只需运行一次
extrafont::font_import()
然后你就会看到大量的字体,被从内置区域,搬运到R 4.0目录下
然后就是在保存之前,加载字体
extrafont::loadfonts()
p = wrap_plots(p_lst)+ plot_layout(ncol = 3) +
plot_annotation(tag_levels = 'a')
ggplot2::ggsave(p, filename = 'sixplot.pdf',width = 20,height = 10)
好啦!到此完美解决~