求助:metafor生成森林图后ggsave保存失败的原因排查
问题:ggsave保存metafor森林图时出现QuartzBitmap_Output错误,需获取高分辨率版本
我用metafor包完成meta分析并生成森林图后,尝试用ggsave保存时出现错误,代码如下:
ggsave("../Desktop/ASPD_META_ANALYSIS_LAPTOP/CVR.png")
报错信息:
Error in grDevices::dev.off() : QuartzBitmap_Output - unable to open
file '../Desktop/ASPD_META_ANALYSIS_LAPTOP/CVR.png'
解决建议
先解决路径/权限问题
- 检查目标文件夹
../Desktop/ASPD_META_ANALYSIS_LAPTOP/是否存在,不存在则手动创建该文件夹 - 改用绝对路径避免相对路径歧义,比如Mac系统:
ggsave("/Users/你的用户名/Desktop/ASPD_META_ANALYSIS_LAPTOP/CVR.png"),Windows系统:ggsave("C:/Users/你的用户名/Desktop/ASPD_META_ANALYSIS_LAPTOP/CVR.png") - 若权限不足,换个有写入权限的目录测试,比如直接保存到桌面:
ggsave("../Desktop/CVR.png")
- 检查目标文件夹
生成高分辨率图片
- 如果森林图是ggplot对象(比如用
ggforest()或自定义ggplot构建的图),直接在ggsave中指定dpi参数:ggsave("../Desktop/ASPD_META_ANALYSIS_LAPTOP/CVR.png", dpi = 300) # 300dpi为印刷级分辨率,可设为600进一步提高 - 如果森林图是用metafor原生
forest()函数生成的base R图形,ggsave不兼容,改用base R的设备函数保存:
可根据图的实际大小调整# 打开png设备,设置尺寸和分辨率 png("../Desktop/ASPD_META_ANALYSIS_LAPTOP/CVR.png", width = 8, height = 6, units = "in", res = 300) # 重新绘制森林图 forest(你的_meta分析对象) # 替换为你的实际分析对象名 # 关闭设备 dev.off()width和height的数值(单位为英寸)。
- 如果森林图是ggplot对象(比如用
内容的提问来源于stack exchange,提问作者JohnTullyPsych
相关产品推荐
相关产品推荐

