在R中使用dev.print保存指定尺寸PNG时的报错问题咨询
解决Base R已显示绘图保存为指定尺寸PNG的问题
针对你遇到的dev.print()报错、savePlot()无法指定尺寸的问题,以下是两种可行的解决方案:
方法一:使用dev.copy()复制当前绘图设备
dev.copy()可以将当前显示的绘图复制到新的png设备,同时支持指定尺寸参数,注意操作后必须关闭设备完成保存:
# 先完成屏幕绘图 hist(rnorm(1000), xlab = "x", ylab = "density", probability = TRUE) abline(h = 0) # 复制当前绘图到PNG文件,指定尺寸(单位为英寸)和分辨率 dev.copy(png, filename = "file.png", width = 8, height = 8, units = "in", res = 300) dev.off() # 必须执行此步骤,否则文件无法正常生成
参数说明:
units:指定尺寸单位,可选"in"(英寸)、"cm"(厘米)等,默认是英寸res:设置图片分辨率(dpi),按需调整,默认72
方法二:用recordPlot()记录绘图对象后重放
如果dev.copy()仍有状态问题,可以先将已绘制的图保存为对象,再在PNG设备中重放:
# 绘制屏幕图形 hist(rnorm(1000), xlab = "x", ylab = "density", probability = TRUE) abline(h = 0) # 记录当前绘图对象 plot_obj <- recordPlot() # 打开PNG设备并输出绘图 png(filename = "file.png", width = 8, height = 8, units = "in", res = 300) plot_obj # 重放记录的绘图 dev.off()
原错误说明
dev.print()报错"invalid graphics state"通常是因为当前绘图设备状态异常,或者参数传递时设备初始化出问题,改用dev.copy()可避免这类状态问题savePlot()确实不支持width和height参数,它只能沿用当前屏幕设备的尺寸,因此无法满足自定义尺寸需求
内容的提问来源于stack exchange,提问作者user3236841
相关产品推荐
相关产品推荐

