MacOS Homebrew装R4.1.1调用ggsave+cairo_pdf时会话崩溃
可行解决方案
- 显式指定grDevices的cairo_pdf调用,避免环境中不同包的同名方法冲突,修改代码如下:
ggsave(plot = p, filename = plot_file, device = grDevices::cairo_pdf, width = 8, height = 8) - 替换为兼容性更好的ragg包图形设备 最推荐该方案:
先在R中安装ragg包:install.packages("ragg"),再修改ggsave参数:
ragg的底层同样基于cairo实现,对Homebrew安装的R兼容性远高于默认的cairo_pdf设备,几乎可以100%解决该场景下的会话崩溃问题。ggsave(plot = p, filename = plot_file, device = ragg::agg_pdf, width = 8, height = 8) - 修改RStudio图形后端配置:
打开RStudio偏好设置 -> 通用 -> 图形 -> 后端,将默认的Auto改为Cairo或Software,重启RStudio后再运行代码测试。 - 调整环境变量优先级,避免Homebrew的cairo和系统自带cairo冲突:
M系列芯片Mac在R的启动配置文件~/.Rprofile中添加:
Intel芯片Mac对应替换路径为Sys.setenv(PATH = paste("/opt/homebrew/bin", Sys.getenv("PATH"), sep = ":"))/usr/local/bin,保存后重启R会话生效。 - 临时规避方案:如果不需要cairo的特殊字体渲染能力,可直接使用默认pdf设备输出,修改代码如下:
ggsave(plot = p, filename = plot_file, device = "pdf", width = 8, height = 8, useDingbats = FALSE) - 检查RStudio版本兼容性:低于2021.09版本的RStudio对R 4.1.x的支持存在缺陷,升级到最新稳定版RStudio即可解决适配问题。
内容的提问来源于stack exchange,提问作者ibagur
相关产品推荐
相关产品推荐

