如何在R中将绘制的图表保存为.png格式并解决导出为空的问题
问题原因
- base R的
plot()属于基础绘图系统,调用时会直接将图形渲染到当前激活的图形设备,不会返回可存储的图形对象,你给AR_VIX赋值的操作没有实际作用,无法保存图形。 - 你调用
png()打开图形设备后,没有执行任何绘图命令就直接调用dev.off()关闭设备,没有任何内容被写入文件,所以生成的是空图。 - 你原有的
plot()代码存在语法错误:括号匹配错误,参数位置错误,字符串类型的参数值缺少引号。
解决方法
方案1:直接用base绘图系统导出(最简单,适配你原有代码)
正确逻辑为:先打开png设备 → 执行绘图代码 → 关闭设备完成导出,修正后代码如下:
# 加载here包(若未安装先运行install.packages("here")) library(here) # 1. 打开png图形设备,指定输出路径、尺寸 png(file = here("00_Data", "AR_VIX.png"), width = 600, height = 350) # 2. 执行绘图命令(修正语法错误,字符串参数加引号) plot(OHR_VIX_P$OHR, col = "red", ylab = "OHR") # 3. 关闭设备,完成导出 dev.off()
方案2:如果需要先将图形存为变量后续复用,换用ggplot2绘图系统
ggplot2的绘图函数会返回可存储的ggplot对象,支持赋值后再导出:
# 加载所需包,未安装先执行install.packages(c("ggplot2", "here")) library(ggplot2) library(here) # 绘图并存为变量 AR_VIX <- ggplot(OHR_VIX_P, aes(y = OHR)) + geom_point(color = "red") + ylab("OHR") # 导出方式1:沿用png+dev.off逻辑,需要手动print绘图对象 png(file = here("00_Data", "AR_VIX.png"), width = 600, height = 350) print(AR_VIX) dev.off() # 导出方式2:用ggplot2自带的ggsave更简便 ggsave(here("00_Data", "AR_VIX.png"), plot = AR_VIX, width = 6, height = 3.5, dpi = 100)
内容的提问来源于stack exchange,提问作者Valeria Arango
相关产品推荐
相关产品推荐

