首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中创建基于屏幕外(位图)图形的“交互式”图形设备?

如何在R中创建基于屏幕外(位图)图形的“交互式”图形设备?
EN

Stack Overflow用户
提问于 2018-09-21 10:02:11
回答 1查看 191关注 0票数 3

在R中绘制大型绘图可能会非常慢。我正在尝试一些workarounds,但即使使用缓冲最大的"dbcairo“X11设备,绘图似乎也要花费更长的时间。我注意到"png“设备对于小图和大图都更快。

在小图中,png()比X11()快3倍:

代码语言:javascript
复制
> 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倍:

代码语言:javascript
复制
> 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 ...但我更熟悉命令行...)

EN

回答 1

Stack Overflow用户

发布于 2018-09-21 12:07:06

如果X11把您逼得筋疲力尽,而您又不想使用RStudio绘图查看器(或者因为您在一个不能安装RStudio服务器的远程服务器上而不能使用),那么一个有趣的替代方案是使用rmote包。您可以将其安装在您自己的本地R安装上,或者,如果您正在SSHing到远程计算机并愿意转发端口,则可以将其安装在远程R实例上。然后,打印的任何打印和帮助文件都将重定向到本地web服务器,您可以从浏览器访问它们。

它还附带了一些很好的附加功能,比如:

  • 绘图历史记录,
  • 能够右键单击并保存绘图,就像在浏览器中保存任何其他图像一样,
  • 能够选择要发送到服务器的输出类型。

我发现这是在远程服务器上使用绘图进行X11转发的一个很好的替代方案,而且它在本地也工作得很好

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52435605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档