在R中绘制大型绘图可能会非常慢。我正在尝试一些workarounds,但即使使用缓冲最大的"dbcairo“X11设备,绘图似乎也要花费更长的时间。我注意到"png“设备对于小图和大图都更快。
在小图中,png()比X11()快3倍:
> system.time({X11(type="dbcairo"); plot(1:1e3); dev.off()})
user system elapsed
0.234 0.029 0.373
> system.time({png("file.png",type="cairo"); plot(1:1e3); dev.off()})
user system elapsed
0.114 0.000 0.113
> system.time({png("file.png",type="Xlib"); plot(1:1e3); dev.off()})
user system elapsed
0.056 0.000 0.107 大型图,png()比X11()快2.3倍到46倍:
> system.time({X11(type="dbcairo"); plot(1:1e5); dev.off()})
user system elapsed
14.420 0.157 15.491
> system.time({png("file.png",type="cairo"); plot(1:1e5); dev.off()})
user system elapsed
6.790 0.001 6.826
> system.time({png("file.png",type="Xlib"); plot(1:1e5); dev.off()})
user system elapsed
0.144 0.010 0.340 结果与其他X11()设备类型(类似于"dbcairo")和其他位图图像类型(类似于"png")基本相同。我猜png()类型"cairo“比"Xlib”需要更长的时间,因为它会产生抗锯齿输出。
通过一个中等大小的ggplot2图,我发现png()比X11() (也就是使用png(..); plot(g); dev.off(),而不是ggsave())快1.7到2.6倍。
由于我几乎可以立即使用像"feh“这样的极简主义图像查看器加载和重新加载PNG文件,因此我想知道为什么不使用png()作为我的主要绘图设备,使用R。
当然,问题是PNG文件直到我调用dev.off()之后才会写入磁盘。这会影响标准绘图界面的样式,在该界面中,我设置设备一次,然后调出各种绘图,有时还会添加线条或文本,同时在绘图窗口中立即查看每个更改。
创建一个新的R图形设备,它将图像文件写入PNG (或其他图像格式),但在每个绘图命令后使用一个简单的图像查看器(如"feh“)来显示它们,这会很困难吗?换句话说,我正在寻找一种像X11这样的“交互式”绘图设备,但它使用现有设备的位图屏幕外渲染工具(如png()、jpeg()或tiff() )来绘制图像。或者,可以对png()设备进行修改,使其具有使其具有此行为的选项。(或者也许我应该在所有事情上都使用knitR ...但我更熟悉命令行...)
发布于 2018-09-21 12:07:06
如果X11把您逼得筋疲力尽,而您又不想使用RStudio绘图查看器(或者因为您在一个不能安装RStudio服务器的远程服务器上而不能使用),那么一个有趣的替代方案是使用rmote包。您可以将其安装在您自己的本地R安装上,或者,如果您正在SSHing到远程计算机并愿意转发端口,则可以将其安装在远程R实例上。然后,打印的任何打印和帮助文件都将重定向到本地web服务器,您可以从浏览器访问它们。
它还附带了一些很好的附加功能,比如:
我发现这是在远程服务器上使用绘图进行X11转发的一个很好的替代方案,而且它在本地也工作得很好
https://stackoverflow.com/questions/52435605
复制相似问题