使用R Submit File将R ggplot图形导入JMP时遇报错求助
解决JSL调用R脚本导入ggplot图形时的“Get data for "png" failed”错误
以下是针对问题的具体修复方案及代码调整:
核心问题分析与修复步骤
- 变量大小写不匹配:JMP对变量名大小写敏感,原代码中
JMP_plot和JMP_Plot大小写不一致,导致无法识别图形对象。 - ggplot未显式渲染:ggplot默认不会自动输出图形,必须通过
print()触发渲染,否则R不会生成可供JMP捕获的图形数据。 - 路径转义错误:JSL中文件路径需用双反斜杠
\\或正斜杠/,原路径的单斜杠会被解析为转义字符,导致R脚本无法被找到。 - 等待时机错误:需在R脚本执行完成后、捕获图形前增加等待,确保图形生成完毕。
修改后的代码
JSL代码
LoadExprs = Expr( InitR = Expr( R Init(); ); RunR = Expr( // 修正路径转义格式 R Submit File( "C:\\R_projects\\JMP\\R_JPM_integration_1.R" ); // 增加等待时间,确保R完成图形渲染 Wait(3); ); CapturePlot = Expr( // 统一变量名大小写 JMP_plot = R Get Graphics( png ); New Window( "Imported Plot", Picture Box( JMP_plot ) ); ); RunClose = Expr( R Term(); // 关闭R连接 ); ); LoadExprs; InitR; RunR; CapturePlot; RunClose;
R代码
library(ggplot2) library(palmerpenguins) # 定义ggplot对象 p <- ggplot(data = penguins, aes(x = bill_length_mm, y = flipper_length_mm, colour = species)) + geom_point() + facet_wrap(. ~ island, nrow = 3) # 显式打印图形,触发R生成图形输出 print(p)
额外排查点
- 确认JMP的R环境配置正确:通过
文件 > 首选项 > R检查R安装路径,点击“测试连接”验证连通性。 - 确保
palmerpenguins包已安装:在R中执行install.packages("palmerpenguins")完成安装。
内容的提问来源于stack exchange,提问作者Paul van Oppen
相关产品推荐
相关产品推荐

