shinydashboard渲染ggplot时出现R致命错误触发会话重启问题求助
解决方案
可按照以下步骤逐一排查修复:
- 显式调用print渲染ggplot对象
部分Linux环境下,shiny的renderPlot上下文不会自动打印ggplot生成的绘图对象,需要主动调用print()输出,修改绘图逻辑如下:
output$plot1 <- renderPlot({ data <- data.frame(y = histdata[seq_len(input$slider)]) p <- ggplot(data, aes(x=y)) + geom_histogram() print(p) })
- 强制shiny使用Cairo图形设备
你仅加载了Cairo库未配置shiny调用该设备,可在代码开头添加全局配置:
library(shinydashboard) library(ggplot2) library(Cairo) # 全局开启Cairo设备渲染 options(shiny.usecairo = TRUE)
也可在renderPlot中单独指定渲染设备:
output$plot1 <- renderPlot({ data <- data.frame(y = histdata[seq_len(input$slider)]) ggplot(data, aes(x=y)) + geom_histogram() }, device = CairoPNG)
- 安装Ubuntu系统缺失的图形依赖
如果上述配置无效,大概率是系统缺少底层图形渲染依赖,在终端执行以下命令安装后重启R会话即可:
sudo apt update sudo apt install -y libcairo2-dev libxt-dev libx11-dev libpng-dev libjpeg-dev
- 重装相关R包
依赖安装完成后仍有问题的话,可卸载并重装相关R包,确保包编译时链接了最新的系统依赖:
remove.packages(c("ggplot2", "shiny", "shinydashboard")) install.packages(c("ggplot2", "shiny", "shinydashboard"))
内容的提问来源于stack exchange,提问作者ekleins
相关产品推荐
相关产品推荐

