X-Git-Url: https://git.auder.net/?p=talweg.git;a=blobdiff_plain;f=pkg%2FR%2Fplot.R;h=52b077bea6cf71eff9d816cf0be4fea2f5a50530;hp=c4f9cda76abef4d47187d36a498d53235b89fb85;hb=4e25de2cf40b946ac6e8c2abc824637a249941d1;hpb=fa8078f9658dccadc0f9bcc7b54c13ecda621816 diff --git a/pkg/R/plot.R b/pkg/R/plot.R index c4f9cda..52b077b 100644 --- a/pkg/R/plot.R +++ b/pkg/R/plot.R @@ -1,126 +1,35 @@ -#' @title plot curves +#' Plot curves #' -#' @description Plot a range of curves in data +#' Plot a range of curves in data #' #' @param data Object of class Data #' @param indices Range of indices (integers or dates) #' #' @export -plotCurves <- function(data, indices) +plotCurves <- function(data, indices=seq_len(data$getSize())) { - yrange = quantile( range( sapply( indices, function(i) { - serie = c(data$getCenteredSerie(i)) - if (!all(is.na(serie))) - range(serie, na.rm=TRUE) - c() - }) ), probs=c(0.05,0.95) ) + series = data$getSeries(indices) + yrange = quantile(series, probs=c(0.025,0.975), na.rm=TRUE) par(mar=c(4.7,5,1,1), cex.axis=1.5, cex.lab=1.5) for (i in seq_along(indices)) { - plot(data$getSerie(indices[i]), type="l", ylim=yrange, - xlab=ifelse(i==1,"Temps (en heures)",""), ylab=ifelse(i==1,"PM10","")) - if (ii < length(indices)) + plot(series[,i], type="l", ylim=yrange, + xlab=ifelse(i==1,"Time (hours)",""), ylab=ifelse(i==1,"PM10","")) + if (i < length(indices)) par(new=TRUE) } } -#' @title plot measured / predicted +#' Plot error #' -#' @description Plot measured curve (in black) and predicted curve (in red) +#' Draw error graphs, potentially from several runs of \code{computeForecast} #' -#' @param data Object return by \code{getData} -#' @param pred Object as returned by \code{getForecast} -#' @param index Index in forecasts -#' -#' @export -plotPredReal <- function(data, pred, index) -{ - horizon = length(pred$getSerie(1)) - 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, xlab="Temps (en heures)", ylab="PM10") - par(new=TRUE) - plot(pred$getSerie(index), type="l", col="#0000FF", ylim=yrange, xlab="", ylab="") -} - -#' @title Compute filaments -#' -#' @description Get similar days in the past + "past tomorrow", as black as distances are small -#' -#' @param data Object as returned by \code{getData} -#' @param index Index in data -#' @param limit Number of neighbors to consider -#' @param plot Should the result be plotted? -#' -#' @export -computeFilaments <- function(data, index, limit=60, plot=TRUE) -{ - index = dateIndexToInteger(index, data) - ref_serie = data$getCenteredSerie(index) - if (any(is.na(ref_serie))) - stop("computeFilaments requires a serie without NAs") - L = length(ref_serie) - first_day = ifelse(length(data$getCenteredSerie(1)