什么硬件限制了R的绘图速度?

时间:2011-12-03 00:10:45

标签: r graphics plot hardware ggplot2

我想提高绘图的速度,我很满意(并且需要很多代码)R图形和ggplot包 - 所以我只想知道如何配置我的系统以加快绘图。

具体做法是:

  1. R中的绘图速度是否受处理器,内存,显卡的限制?
  2. 是否有特定的硬件组件或配置会增加绘图速度?

  3. 更新:评论中的问题答案:

    规格:Ubuntu 11.04,intel Core Duo,8GB ram,但我更感兴趣的是图形计算或图形渲染是限制性的,如果是,我该如何使用这些信息。

    我的情节有很多对象,但我不知道绘图的计算成本是多少。我在绘图时没有进行任何具体的分析(我在完成任何必要的分析后进行绘图),虽然我知道有些是“动态”完成的,就像绘制平滑线或甚至将数据转换成位置一样。

2 个答案:

答案 0 :(得分:9)

除非您拥有计算机密集型单一地块,否则加速多重绘图的一个好方法是并行处理。例如,假设您有一个数据框,并且您希望通过某个变量(或变量)将其分解,并为每个分区绘制图。

注册并行后端的方法有很多种,所以我不再赘述。例如,请参阅此小插图:http://cran.r-project.org/web/packages/doSMP/vignettes/gettingstartedSMP.pdf

然后查看Hadley的ddply包中的函数plyr并使用.parallel = TRUE选项。基本上就是这样。然后就是正常绘图。

这是一个独立的例子:

#this is the particular library I chose to register a parallel backend. There are others. See the new "Parallel R" book for details.
library(doMC)
registerDoMC()
getDoParWorkers() #This lists how many workers you have (hopefully more than 1!)

library(ggplot2)
ddply(
        mtcars, .variables = "vs", .fun = function(x) {
        #do your plotting now 
        example_plot <- ggplot(x, aes(y = mpg, x = wt)) + geom_point() + geom_smooth(se = FALSE)
        #save your plot
        ggsave(paste(x$vs[1],".pdf",sep = ""), example_plot)
        },
        .parallel = TRUE
)

这将保存两个文件,即.pdf和1.pdf,它们是vs数据帧的mtcars变量的级别(即唯一值)。如果您通过变量country name将其分解,则保存的文件将是国家/地区的名称。 0.pdf和1.pdf如下:

enter image description here

enter image description here

答案 1 :(得分:4)

正如@Xu Wang所指出的那样,你可以使用并行化来一次绘制几个图。

因此硬件方面,具有足够RAM的强大的快速多核机器会有所帮助。

如果你想在x-y图(散点图)中用100万个圆绘制单个图,那么图形硬件加速将非常有用。

但是,如果R中的图形设备支持硬件加速,那么快速显卡只会有所帮助。目前他们没有 - 正如@hadley指出的那样,ggplot使用标准图形设备。

rgl包显然使用OpenGL来制作3D图形。虽然没试过。您可以使用它来更有效地绘制一些图...

我有一些创建快速交互式硬件加速图(2d和3d)的经验,它的速度可以更快。 2d图实际上比3d图更难加速......但是插入R的当前图形设备概念可能并不容易。

更新我刚尝试了rgl及其plot3d一百万分。它是我的(相当强大的)笔记本电脑的完全交互式(小部分时间更新)。

library(rgl)
x <- sort(rnorm(1e6))
y <- rnorm(1e6)
z <- rnorm(1e6) + atan2(x,y)
plot3d(x, y, z, col=rainbow(1000))