X-Git-Url: https://git.auder.net/?p=talweg.git;a=blobdiff_plain;f=pkg%2FR%2Fplot.R;fp=pkg%2FR%2Fplot.R;h=b106e99714ba7ad0196528515f231947aa1f3363;hp=d501d9eaefceee4a312a9e65ad02e92a92012176;hb=aa5397f16be60b338e303b26cfceb65defac3054;hpb=096e9798a4241f14d12c3663f8035d8def43d7e3 diff --git a/pkg/R/plot.R b/pkg/R/plot.R index d501d9e..b106e99 100644 --- a/pkg/R/plot.R +++ b/pkg/R/plot.R @@ -26,28 +26,42 @@ plotCurves <- function(data, indices=seq_len(data$getSize())) #' \code{\link{plotFilamentsBox}}, \code{\link{plotRelVar}} #' #' @export -plotError <- function(err, cols=seq_along(err)) +plotError <- function(err, cols=seq_along(err), agg="day") { if (!is.null(err$abs)) err = list(err) par(mfrow=c(2,2), mar=c(4.7,5,1,1), cex.axis=1.5, cex.lab=1.5) L = length(err) - yrange = range( sapply(1:L, function(i) ( err[[i]]$abs$day ) ), na.rm=TRUE ) - matplot( sapply( seq_len(L), function(i) err[[i]]$abs$day ), type="l", - xlab="Time (hours)", ylab="Mean |y - y_hat|", ylim=yrange, col=cols, lwd=2, lty=1 ) + yrange = range( sapply(1:L, function(i) err[[i]]$abs$day), na.rm=TRUE ) + matplot(sapply( seq_len(L), function(i) err[[i]]$abs$day ), type="l", + xlab="Time (hours)", ylab="Mean |y - y_hat|", ylim=yrange, col=cols, lwd=2, lty=1) - yrange = range( sapply(1:L, function(i) ( err[[i]]$abs$indices ) ), na.rm=TRUE ) - matplot( sapply( seq_len(L), function(i) err[[i]]$abs$indices ), type="l", - xlab="Time (days)", ylab="Mean |y - y_hat|", ylim=yrange, col=cols, lwd=2, lty=1 ) + agg_curves <- sapply( seq_len(L), function(i) { + curve <- err[[i]]$abs$indices + delta <- if (agg=="day") 1 else if (agg=="week") 7 else if (agg=="month") 30 + vapply( seq(1,length(curve),delta), function(i) { + mean(curve[i:(i+delta-1)], na.rm=TRUE) + }, vector("double",1), USE.NAMES=FALSE ) + }) + yrange = range(agg_curves, na.rm=TRUE) + matplot(agg_curves, type="l", xlab=paste("Time (",agg,"s)", sep=""), + ylab="Mean |y - y_hat|", ylim=yrange, col=cols, lwd=2, lty=1) - yrange = range( sapply(1:L, function(i) ( err[[i]]$MAPE$day ) ), na.rm=TRUE ) - matplot( sapply( seq_len(L), function(i) err[[i]]$MAPE$day ), type="l", - xlab="Time (hours)", ylab="Mean MAPE", ylim=yrange, col=cols, lwd=2, lty=1 ) + yrange = range( sapply(1:L, function(i) err[[i]]$MAPE$day), na.rm=TRUE ) + matplot(sapply( seq_len(L), function(i) err[[i]]$MAPE$day ), type="l", + xlab="Time (hours)", ylab="Mean MAPE", ylim=yrange, col=cols, lwd=2, lty=1) - yrange = range( sapply(1:L, function(i) ( err[[i]]$MAPE$indices ) ), na.rm=TRUE ) - matplot( sapply( seq_len(L), function(i) err[[i]]$MAPE$indices ), type="l", - xlab="Time (days)", ylab="Mean MAPE", ylim=yrange, col=cols, lwd=2, lty=1 ) + agg_curves <- sapply( seq_len(L), function(i) { + curve <- err[[i]]$MAPE$indices + delta <- if (agg=="day") 1 else if (agg=="week") 7 else if (agg=="month") 30 + vapply( seq(1,length(curve),delta), function(i) { + mean(curve[i:(i+delta-1)], na.rm=TRUE) + }, vector("double",1), USE.NAMES=FALSE ) + }) + yrange = range(agg_curves, na.rm=TRUE) + matplot(agg_curves, type="l", xlab=paste("Time (",agg,"s)", sep=""), + ylab="Mean MAPE", ylim=yrange, col=cols, lwd=2, lty=1) } #' Plot measured / predicted