2012-06-08 60 views
18

我使用plot()超過100萬個數據點,結果非常慢。加快大數據集的plot()函數

有什麼辦法來提高速度,包括編程和硬件解決方案(更多的內存,圖形卡...)?

繪圖數據存儲在哪裏?

+4

總結數據並繪製總結。 – Andrie

+0

我需要直觀地繪製和觀察數據 – SilverSpoon

+0

您可以提供更多關於您正在使用的繪圖功能的信息嗎?無論您是使用基本圖形,點陣還是ggplot,它都會產生很大的差異。 – Andrie

回答

23

一個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))) 

enter image description here

+2

這是一個重要的觀點:沒有人能夠吸收數百萬甚至數千點的含義(除了那些「藝術」分形圖:-)),所以找到一種方法來聚集或以其他方式減少項目的數量情節。 –

+1

我不知道這個軟件包,你的回答對我在準備的論文中呈現結果的具體問題很有幫助。 +1。然而,問題依然存在:繪圖時什麼是限制?它只是CPU功率還是別的? – Roland

+2

設備驅動程序不能很好地處理這麼大的繪圖任務。繪製單點有很多開銷。這不僅僅是兩個數字,而且需要考慮着色和透明度的能力。這不僅僅是R.當給予具有數百萬個點的圖像來渲染時,PDF觀看者會大大地陷入困境。 –

2

有你看了tabplot包。它是爲大數據而設計 http://cran.r-project.org/web/packages/tabplot/我使用它比使用hexbin更快(用於overplotting甚至默認的向日葵地塊)

也是我認爲哈德利在http://blog.revolutionanalytics.com/2011/10/ggplot2-for-big-data.html

寫了一篇關於大數據DS的博客修改ggplot東西

「」「我目前有工作的另一名學生,月湖,把我們的研究,一個強大的[R包」。「」 2011年10月21日

也許我們可以問哈德利如果更新的ggplot3已準備就緒

8

一個簡單而快速的方法是設置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