Skip to content
Snippets Groups Projects
Select Git revision
  • 66d8e6a48666806a0d3f7a53b62f18542b65d1c9
  • master default protected
  • feature/quantileforecast
  • develop
  • add_kseq
5 results

make.R

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    par_ts.R 4.87 KiB
    # # Do this in a separate file to see the generated help:
    #library(devtools)
    #document()
    #load_all(as.package("../../onlineforecast"))
    #?par_ts
    
    #' Set parameters for \code{\link{plot_ts}()} globally
    #'
    #' Often in a report some plot parameters must be set for all plots, which is done with \code{\link{par}()}.
    #'
    #' The parameters which are general for \code{\link{plot_ts}()} can be set and saved in \code{\link{options}()},
    #' and they will then be applied as default in all calls to plot_ts(). See the examples how to do this.
    #'
    #' If any of these parameters are given to \code{\link{plot_ts}()}, then it will be used over the default.
    #'
    #' @title Set parameters for \code{\link{plot_ts}()}
    #' @param fromoptions logical: Read the list of parameters set in \code{\link{options}("par_ts")$par_ts}, then the additional parameters set in \code{...} are replaced before the list is returned.
    #' @param p List of the parameters, as returned by the function itself. If given, the additional parameters set in \code{...} are replaced before the list is returned.
    #' @param ... any of the following parameters can be set replacing the default values:
    #' 
    #' \code{xnm} "t": The name of the time
    #'
    #' \code{legendspace} 10:
    #' Horizontal space for the lengend in character spaces
    #'
    #' \code{legendcex} 1: Scaling of the legend
    #' 
    #' \code{legendrangeshow} TRUE: Include the range for each variable in the legend
    #' 
    #' \code{ylimextend} c(lower,upper): Extend the ylim for each plot with a proportion, seperately for the lower and upper limit
    #' 
    #' \code{yaxisextend} c(lower,upper): Extend the yaxis for each plot with a proportion, seperately for the lower and upper limit
    #' 
    #' \code{mainsline} (numeric): with the \code{line} for the main in the plots.
    #' 
    #' \code{cex} (numeric): The cex to use for the \code{plot_ts} plots.
    #' 
    #' \code{plotfun}: The function used for plotting, as default \code{lines}.
    #' 
    #' \code{xaxisformat} (character): The format of the xaxis, see \code{\link{strptime}()}.
    #' 
    #' \code{colorramp} colorRampPalette: The colorramp used for setting multiple colors in each plot
    #'
    #' @return A list of the parameters above, which can be set globally (see examples) or passed to \code{\link{plot_ts}}.
    #' 
    #' @examples
    #'
    #' # Data for plots
    #' D <- subset(Dbuilding, 1:192)
    #'
    #' # See the parameters which can be set
    #' p <- par_ts()
    #' names(p)
    #' p$xnm
    #'
    #' # Using the default values
    #' plot_ts(D, c("heatload","Ta"), kseq=1:24)
    #'
    #' # Set the parameters directly
    #' plot_ts(D, c("heatload","Ta"), kseq=1:24, legendcex=0.8, legendspace=8)
    #'
    #' # Set parameters to be given in a list
    #' p <- par_ts()
    #' p$legendcex <- 0.8
    #' p$legendspace <- 8
    #'
    #' # Use those parameters
    #' plot_ts(D, c("heatload","Ta"), kseq=1:24, p=p)
    #'
    #' # Set globally (if not set specifed the default values will be used)
    #' options(par_ts=p)
    #'
    #' # Now the global parameters will be used
    #' plot_ts(D, c("heatload","Ta"), kseq=1:24)
    #'
    #' # Still providing a parameter directly it will used, e.g. change the plotting function
    #' plot_ts(D, c("heatload","Ta"), kseq=1:24, plotfun=points)
    #'
    #' # Control more precisely the plotting function
    #' plot_ts(D, c("heatload","Ta"), kseq=1:24, plotfun=function(x, ...){ points(x, type="b", ...)})
    #'
    #' # Another colorramp function
    #' p$colorramp <- rainbow
    #' options(par_ts=p)
    #' plot_ts(D, c("heatload","Ta"), kseq=1:24)
    #'
    #' @importFrom graphics lines
    #' @importFrom grDevices colorRampPalette
    #' @export
    par_ts <- function(fromoptions=FALSE, p=NA, ...){
        # Take the values in options= if they are there
        if(is.na(p)[1]){
            if(fromoptions & !is.null(options("par_ts")$par_ts)){
                p <- options("par_ts")$par_ts
            }else{
                # Return a list with the default values
                p <- list()
                # Name of the variable for the x axis
                p$xnm <- "t"
                # Legend:
                p$legendspace <- 10       # Space for the legend
                p$legendcex <- 1          # Cex for the legend
                p$legendrangeshow <- TRUE # Add the range to the legendtext
                #
                p$ylimextend <- c(0,0.1)
                #
                p$yaxisextend <- c(0,-0.25)
                # Default is NA, it will be set depeding on the t in plot_ts_series
                p$xaxisformat <- NA
                #
                p$cex <- 1
                #
                p$mainsline <- -1.2
                # The default plot function, overwrite it with another function to change it
                p$plotfun <- lines
                # Color function, can be replaced with in-built or others, e.g. rainbow()
                p$colorramp <- colorRampPalette(c("black","cyan","purple","blue","red","green"))
            }
        }
        # Replace all the parameters given in ...
        args <- list(...)
        nms <- nams(p)[nams(p) %in% nams(args)]
        if (length(nms) > 0) {
            for(nm in nms){
                # If it is a function, the get it parent environment
                p[[nm]] <- args[[nm]]
            }
        }
        return(p)
    }