R语言 导出图形问题

这个话题来自于一个同学跟我讨论的一个问题,问题如下:
他在导出图形的时候出现了报错(直接画图是没有问题的):
图片.png

图片.png
我们来逐条分析一下,这个报错是想表达什么?以及什么情况下可能出现此报错
  • dev.off()函数的功能是关闭指定的(默认是当前的)装置,报的错误是不能关闭1号装置,这里也就暗示,当前装置是1号装置,那什么是一号装置呢?原本应该是什么装置呢?
  • 1号装置其实是“null device”,它相当于一个占位符。R中,每次只能有一个装置被激活,一旦有其他装置(除了1号装置之外的装置)被打开,那1号装置就不可能被激活。按照报错,当前装置是1号装置,也就是其他装置没有被打开。(可以在不打开图形设备(不要tiff()语句)的情况下直接试一下dev.off()命令,也会发现报此错,是同样的道理)
  • 那应该打开的是什么装置呢?我用我的电脑尝试了一下,打开的装置名应该为tiff,此处为2号装置
tiff()
dev.cur()
tiff 
 2 

参考来源:https://www.math.mun.ca/~jcloredoosti/R/library/grDevices/html/dev.html

综上,是因为tiff()没有成功打开图形装置

在网上搜索的解决办法:(https://9to5answer.com/error-in-dev-off-cannot-shut-down-device-1-the-null-device

dev.off()

改成

while (!is.null(dev.list()))  dev.off()
同学试了一下,成功了。这句话的含义就是,一直到有其他设备(除1号设备外)被激活为止,再关闭被激活的设备。(注:dev.list()返回的是除了1号装置之外的其他所有被打开的装置)
重点来了,同学在尝试的过程中新奇的发现,这个错误只会出现在他交互式运行的情况下,如果把这块代码一起运行的话,并不会报错。这点儿很奇怪,我没有找到原因。
同时,他还跟我分享了他发现的一些问题,大家以后可以注意一下
图片.png
接下来再顺带分享一些其他东西
1.Rstudio也可以直接点击Export导出图,并且可以调整大小(其中Save as Image有以下格式可选:PNG, JPEG, TIFF, BMP, Metafile, SVG, EPS)
图片.png
2. 推荐学习的包:ggplot2, ggtree, clusterProfiler
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容