jupyter batch; lower font size on plots
[talweg.git] / R / plot.R
index e5d4753..f551ef4 100644 (file)
--- a/R/plot.R
+++ b/R/plot.R
 plotPredReal <- function(data, pred, index)
 {
        horizon = length(pred$getSerie(1))
-       par(mar=c(4.7,5,1,1), cex.axis=2, cex.lab=2, lwd=2)
+       par(mar=c(4.7,5,1,1), cex.axis=1.5, cex.lab=1.5, lwd=3)
        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, 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, xlab="", ylab="")
 }
 
 #' @title Plot filaments
@@ -51,7 +51,7 @@ plotFilaments <- function(data, index, limit=60)
        grays = gray.colors(20, 0.1, 0.9) #TODO: 20 == magic number
        colors = c(
                grays[ floor( 20.5 * distances[indices] / (1+max(distances[indices])) ) ], "#FF0000")
-       par(mar=c(4.7,5,1,1), cex.axis=2, cex.lab=2, lwd=2)
+       par(mar=c(4.7,5,1,1), cex.axis=1.5, cex.lab=1.5, lwd=2)
        for (i in seq_len(length(indices)+1))
        {
                ind = ifelse(i<=length(indices), indices[i] - first_day + 1, index)
@@ -76,8 +76,8 @@ plotSimils <- function(pred, index)
        weights = pred$getParams(index)$weights
        if (is.null(weights))
                stop("plotSimils only works on 'Neighbors' forecasts")
-       par(mar=c(4.7,5,1,1))
-       hist(pred$getParams(index)$weights, nclass=20, xlab="Weight", ylab="Frequency")
+       par(mar=c(4.7,5,1,1), cex.axis=1.5, cex.lab=1.5)
+       hist(pred$getParams(index)$weights, nclass=20, xlab="Poids", ylab="Effectif")
 }
 
 #' @title Plot error
@@ -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))
 {
-       par(mfrow=c(2,2), mar=c(4.7,5,1,1), cex.axis=2, cex.lab=2, lwd=2)
+       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, 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")
@@ -159,7 +162,7 @@ plotFbox <- function(data, filter=function(index) (TRUE))
        series_matrix = series_matrix[,-nas_indices]
 
        series_fds = rainbow::fds(seq_len(nrow(series_matrix)), series_matrix)
-       par(mfrow=c(1,2), mar=c(4.7,5,1,1), cex.axis=2, cex.lab=2)
+       par(mfrow=c(1,2), mar=c(4.7,5,1,1), cex.axis=1.5, cex.lab=1.5)
        rainbow::fboxplot(series_fds, "functional", "hdr", xlab="Temps (heures)", ylab="PM10",
                plotlegend=FALSE, lwd=2)
        rainbow::fboxplot(series_fds, "bivariate", "hdr", plotlegend=FALSE)