2015-10-01 17 views
0

我想繪製一個向量,其中有604800個點的向量,對於一個序列: x=seq(from=1, to=604800)。這不是問題,但我確實需要爲這些圖添加黃土曲線。將黃土曲線添加到大數據集圖的快速方法

我已經試過這個使用ggplot2但這需要永遠,並在繪製大型數據集是非常糟糕的。見R代碼裏面:

vf <- ggplot(single.prop, aes(x,y)) + geom_line(linetype=1, size=1) 
vf <- vf + stat_smooth(method="loess",fullrange=TRUE,aes(outfit=fit1<<-..y..)) 
vf 

我現在已經嘗試使用base包,但是這也到永遠:

lw <- loess(y ~ x,data=single.prop) 
plot(y ~ x, data=single.prop,pch=19,cex=0.1) 
k <- order(single.prop$x) 
lines(single.prop$x[k],lw$fitted[k],col="red",lwd=3) 

沒有任何人有什麼我可以做,使這個運行任何建議更快?我必須多次這樣做,並且迄今爲止一直等待大約15分鐘,並且還沒有完成。

+0

你有沒有在'ggplot'中試過'stat_smooth(method =「loess」)''。這需要時間,但似乎工作 – Mateusz1981

+0

是的,這是我的原始方法,根據上面的代碼.. – sym246

回答

0

有了這許多數據點它確實可以持續很長時間的情節呈現。當然,這取決於數據,但往往有這麼多點的情節並沒有給出一個非常可以解釋的圖景。對於這兩個時間的可解釋性來說,首先計算彙總統計數據然後再繪製積分可能很有用。在你的情況下,我可以想象在x上分箱並且爲每個箱子計算一個或多個y的統計數據可能是有用的。我用平均數做了一個小例子,但是當然你可以使用你喜歡的數據。希望這會有所幫助..

x <- 1:10^6 
y <- x/10^5 + rnorm(10^6) 
plot_dat <- data.frame(x, y) 
p <- ggplot(plot_dat, aes(x,y)) + geom_point() 


bin_plot_dat <- function(bin_size){ 
    nr_bins <- nrow(plot_dat)/bin_size 
    x2 <- rep(1:nr_bins * bin_size, each = bin_size) 
    y2 <- tapply(plot_dat$y, x2, mean) 
    data.frame(x = unique(x2), y= y2) 
} 

plot_dat2 <- bin_plot_dat(50) 
p2 <- ggplot(plot_dat2, aes(x,y)) + 
    geom_point() 

p2 + geom_smooth() 
相關問題