R语言if语句中保存的TIFF文件无内容问题求助
R语言条件语句内保存TIFF无图表内容的解决方法
问题出在R的非交互式执行逻辑上:在脚本的代码块(比如if语句内部)里,直接引用已生成的绘图对象不会自动触发渲染,必须显式调用绘图输出操作。
针对不同绘图系统,给出两种修复方案:
1. 如果你用的是ggplot2绘图
ggplot生成的是对象,在代码块里需要用print()显式打印才能输出到设备:
if (RMCAv_Graph == TRUE){ Save_Path = file.path(Sub_Folder_Path, "RMCAv.tiff") tiff(file = Save_Path, units = "in", width = 5, height = 5, res = 600) print(RMCAv_Plot) # 关键:显式打印ggplot对象 dev.off() }
2. 如果你用的是基础绘图系统
基础绘图没有可存储的对象(除非用recordPlot()),最稳妥的方式是在设备内部重新执行绘图代码:
if (RMCAv_Graph == TRUE){ Save_Path = file.path(Sub_Folder_Path, "RMCAv.tiff") tiff(file = Save_Path, units = "in", width = 5, height = 5, res = 600) # 重新写生成该图表的基础绘图代码,示例: plot(your_x_data, your_y_data, main = "RMCAv Plot") lines(your_trend_data, col = "red") dev.off() }
补充:为什么在条件语句外可以正常工作?因为在脚本的顶级作用域中,R会自动对对象执行隐式的print()操作,但进入代码块后这个隐式行为会被关闭,必须手动调用。
内容的提问来源于stack exchange,提问作者abul22
相关产品推荐
相关产品推荐

