R 4.1.1运行Shiny应用出现Cairo Graphics API版本不匹配错误
Windows R 4.1.1 版本Shiny Cairo图形API不匹配报错解决方案
该报错核心原因是Shiny默认优先调用Cairo包生成网页端PNG图片,而已安装的Cairo包编译版本与R 4.1.1的图形API不兼容;单独运行绘图代码无报错是因为默认调用R原生图形设备,不会触发Cairo调用,方案1是最便捷的修复方式,优先尝试:
- 方案1:全局关闭Shiny的Cairo调用
在Shiny应用脚本开头添加如下配置,强制Shiny使用R原生png设备输出图形:
添加后重新运行应用即可验证是否修复。options(shiny.usecairo = FALSE) - 方案2:从源码重新编译安装Cairo包
已有的二进制Cairo包可能适配的是旧版本R的API,完全卸载后从源码编译安装适配当前R版本的版本:- 运行卸载命令:
remove.packages("Cairo") - 重启R,确保已安装适配R 4.1.1的Rtools工具链
- 运行源码安装命令:
install.packages("Cairo", type = "source")
安装完成后重新测试Shiny应用。
- 运行卸载命令:
- 方案3:在renderPlot中明确指定图形设备
不需要修改全局配置,仅在出问题的renderPlot调用中指定用原生png设备:output$plot <- renderPlot({ x <- seq(-pi,pi,0.1) plot(x, sin(x)) }, dev = "png")
内容的提问来源于stack exchange,提问作者Paul van Oppen
相关产品推荐
相关产品推荐

