更新R包后使用ggsave保存SVG出现“bad value”错误求助
解决ggsave保存SVG报错及R包版本回滚方法
一、解决SVG保存报错问题
针对更新包后ggsave存SVG时出现的match_font_c(family, as.logical(italic), as.logical(bold)) : bad value错误(仅SVG格式受影响),可尝试以下步骤:
- 清除字体缓存:运行
systemfonts::clear_font_cache(),完全重启R会话后再尝试保存SVG。更新包后systemfonts的字体缓存可能出现异常,清除后会重新生成正确缓存。 - 强制指定SVG设备字体:在ggsave中明确指定系统已安装的字体,示例代码:
替换ggplot2::ggsave( filename = params$file_plot_output, plot = p1, device = svglite::svglite(family = "Arial") )"Arial"为你系统中存在的字体(比如"Helvetica"或系统默认无衬线字体),避免自动字体匹配出错。 - 调整关联包版本:报错涉及
textshaping和svglite的兼容性,可尝试降级其中一个包:# 降级svglite到2.1.1版本 devtools::install_version("svglite", version = "2.1.1") # 或降级textshaping到0.3.6版本 devtools::install_version("textshaping", version = "0.3.6")
二、快速回滚R包到更新前版本
方法1:使用devtools::install_version()
若记得更新前的包版本号,直接安装指定版本:
# 示例:回滚ggplot2到3.4.3版本 devtools::install_version("ggplot2", version = "3.4.3")
若不确定版本号:
- 查看RStudio的包更新历史(若在RStudio中更新);
- 用
packageDescription("包名")$Version查看当前版本,尝试安装前一个稳定版本。
方法2:本地包备份替换
如果之前手动备份过包的本地文件,直接替换R库中的对应包文件夹,重启R即可生效。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

