加速大型数据集的plot()函数

Sil*_*oon 23 plot r

我使用plot()超过1百万个数据点,结果非常慢.

有没有办法提高速度,包括编程和硬件解决方案(更多内存,图形卡......)?

存储数据在哪里存储?

Ben*_*ker 25

hexbin图实际上显示了一些东西(不像散点图@Roland在评论中提出的,可能只是一个巨大的,缓慢的,blob)并且在我的机器上花了大约3.5秒为你的例子:

set.seed(101)
a<-rnorm(1E7,1,1)
b<-rnorm(1E7,1,1)
library(hexbin)
system.time(plot(hexbin(a,b)))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 这是一个重要的观点:没有人能够吸收数百万甚至数千个点的意义(除了那些"艺术"分形图中的一些:-)),因此找到一种方法来聚类或以其他方式减少要绘制的项目的大小. (2认同)
  • 设备驱动程序不能很好地处理如此大的绘图任务.绘制单个点有很多开销.它不仅仅是两个数字,还需要考虑着色和透明度功能.这不仅仅是R.当给出一个有数百万个点渲染的图像时,PDF观众将会大幅度陷入困境. (2认同)
  • 实际上,使用`pch =“。”`可以节省很多时间。您可以通过(例如)直接绘制为PNG而不是屏幕或PDF来加快处理速度(这也将使最终绘图的大小小得多) (2认同)

TPA*_*row 14

一个简单快捷的方法是设置pch='.'.性能如下所示

x=rnorm(10^6)
> system.time(plot(x))
  user  system elapsed 
  2.87   15.32   18.74 
> system.time(plot(x,pch=20))
  user  system elapsed 
  3.59   22.20   26.16 
> system.time(plot(x,pch='.'))
  user  system elapsed 
  1.78    2.26    4.06 
Run Code Online (Sandbox Code Playgroud)