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)

好啦!到此完美解决~

Yunze Liu
Yunze Liu
Bioinformatics Sharer

Co-founder of Bioinfoplanet(生信星球)

Next
Previous

Related