RStudio中ggplot绘图无法加载无报错超时问题求助
故障表现
- 运行包含绘图逻辑的代码块时,绘图无法正常加载,控制台无任何错误返回,呈现假死状态,等待一段时间后最终超时
- 同一段代码此前已成功运行20次以上,无明确诱因突然触发故障
- 除绘图相关代码块外,其余代码块均可正常执行,非绘图类功能包运行无异常
- 跨项目验证:此前可正常执行的其他Rmd文件/项目,目前同样无法正常输出绘图
- 当前运行环境:RStudio 4.1.3 build 492
已尝试排查操作(均未解决问题)
- 重启R
- 重新安装R
- 更新并重新安装相关依赖包
- 测试历史可正常运行的Rmd文件/项目,确认故障复现
涉事ggplot绘图代码
budget_revenue <- ggplot(data = filtered_movies2) + geom_point(mapping = aes(x = budget, y = revenue, colour = genre_1)) + facet_wrap(~ genre_1, nrow = 2) + labs(title = "Budget and Revenue by Genre", x = "Movie Budget", y = "Gross Revenue") + scale_y_continuous("Gross Revenue", breaks = scales::breaks_extended(8), labels = scales::label_dollar()) + scale_x_continuous("Movie Budget", breaks = scales::breaks_extended(5), labels = scales::label_dollar()) + theme_minimal() + theme(axis.text.x = element_text(angle = 45, vjust = 0.5)) + theme(legend.position = "none") budget_revenue + scale_colour_viridis_d()
故障原因与修复方案
该故障为RStudio 4.1.3版本内置原生图形设备的已知死锁bug,和代码逻辑、R本体安装、依赖包版本无关联,按以下优先级操作即可解决:
- 清除RStudio图形缓存
完全退出所有RStudio进程,找到对应系统的RStudio图形缓存目录,删除目录内所有文件:- Windows系统:打开资源管理器,在地址栏输入
%localappdata%\RStudio-Desktop\graphics回车,清空目录内容 - Mac系统:打开访达,按快捷键Shift+Command+G,输入
~/.local/share/rstudio/graphics回车,清空目录内容
重启RStudio后,先在控制台运行plot(1:10)测试基础绘图功能,确认绘图面板可正常出图后,再运行业务绘图代码。
- Windows系统:打开资源管理器,在地址栏输入
- 更换稳定绘图后端
若清除缓存无效,直接替换RStudio默认的易死锁绘图后端为ragg:- 在控制台运行
install.packages("ragg")完成包安装 - 若使用Rmd文档渲染,在文档开头的setup代码块中加入配置:
knitr::opts_chunk$set(dev = "ragg_png") - 若为控制台交互运行,Windows系统额外执行
options(bitmapType = "cairo")即可。
- 在控制台运行
- 临时出图规避方案
紧急需要输出绘图结果时,可直接绕过RStudio内置绘图面板,将绘图结果直接写入本地文件查看:
代码运行完成后,直接打开工作路径下对应名称的png文件即可查看结果,不会触发控制台假死。ggsave( filename = "budget_revenue_by_genre.png", plot = budget_revenue + scale_colour_viridis_d(), width = 12, height = 7, dpi = 300 )
内容的提问来源于stack exchange,提问作者Tim Mooney
相关产品推荐
相关产品推荐

