You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:18:00