fixes and improvements
[talweg.git] / R / plot.R
index e5d4753..a7c9395 100644 (file)
--- a/R/plot.R
+++ b/R/plot.R
@@ -13,9 +13,9 @@ plotPredReal <- function(data, pred, index)
        par(mar=c(4.7,5,1,1), cex.axis=2, cex.lab=2, lwd=2)
        measure = data$getSerie(pred$getIndexInData(index)+1)[1:horizon]
        yrange = range( pred$getSerie(index), measure )
-       plot(measure, type="l", ylim=yrange, lwd=3)
+       plot(measure, type="l", ylim=yrange, lwd=3, xlab="Temps (en heures)", ylab="PM10")
        par(new=TRUE)
-       plot(pred$getSerie(index), type="l", col=2, ylim=yrange, lwd=3)
+       plot(pred$getSerie(index), type="l", col="#0000FF", ylim=yrange, lwd=3, xlab="", ylab="")
 }
 
 #' @title Plot filaments
@@ -85,20 +85,23 @@ plotSimils <- function(pred, index)
 #' @description Draw error graphs, potentially from several runs of \code{getForecast}
 #'
 #' @param err Error as returned by \code{getError}
+#' @param cols Colors for each error (default: 1,2,3,...)
 #'
 #' @seealso \code{\link{plotPredReal}}, \code{\link{plotFilaments}}, \code{\link{plotSimils}}
 #'   \code{\link{plotFbox}}
 #'
 #' @export
-plotError <- function(err)
+plotError <- function(err, cols=seq_along(err))
 {
+       if (!is.null(err$abs))
+               err = list(err)
        par(mfrow=c(2,2), mar=c(4.7,5,1,1), cex.axis=2, cex.lab=2, lwd=2)
        L = length(err)
        yrange = range( sapply(1:L, function(index) ( err[[index]]$abs$day ) ), na.rm=TRUE )
        for (i in seq_len(L))
        {
                plot(err[[i]]$abs$day, type="l", xlab=ifelse(i==1,"Temps (heures)",""),
-                       ylab=ifelse(i==1,"Moyenne |y - y_hat|",""), ylim=yrange, col=i)
+                       ylab=ifelse(i==1,"Moyenne |y - y_hat|",""), ylim=yrange, col=cols[i])
                if (i < L)
                        par(new=TRUE)
        }
@@ -106,7 +109,7 @@ plotError <- function(err)
        for (i in seq_len(L))
        {
                plot(err[[i]]$abs$indices, type="l", xlab=ifelse(i==1,"Temps (jours)",""),
-                       ylab=ifelse(i==1,"Moyenne |y - y_hat|",""), ylim=yrange, col=i)
+                       ylab=ifelse(i==1,"Moyenne |y - y_hat|",""), ylim=yrange, col=cols[i])
                if (i < L)
                        par(new=TRUE)
        }
@@ -114,7 +117,7 @@ plotError <- function(err)
        for (i in seq_len(L))
        {
                plot(err[[i]]$MAPE$day, type="l", xlab=ifelse(i==1,"Temps (heures)",""),
-                       ylab=ifelse(i==1,"MAPE moyen",""), ylim=yrange, col=i)
+                       ylab=ifelse(i==1,"MAPE moyen",""), ylim=yrange, col=cols[i])
                if (i < L)
                        par(new=TRUE)
        }
@@ -122,7 +125,7 @@ plotError <- function(err)
        for (i in seq_len(L))
        {
                plot(err[[i]]$MAPE$indices, type="l", xlab=ifelse(i==1,"Temps (jours)",""),
-                       ylab=ifelse(i==1,"MAPE moyen",""), ylim=yrange, col=i)
+                       ylab=ifelse(i==1,"MAPE moyen",""), ylim=yrange, col=cols[i])
                if (i < L)
                        par(new=TRUE)
        }
@@ -136,7 +139,7 @@ plotError <- function(err)
 #' @param fiter Optional filter: return TRUE on indices to process
 #'
 #' @export
-plotFbox <- function(data, filter=function(index) (TRUE))
+plotFbox <- function(data, filter=function(index) TRUE)
 {
        if (!requireNamespace("rainbow", quietly=TRUE))
                stop("Functional boxplot requires the rainbow package")