Newer
Older
# # 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}}.
#'
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#'
#' # 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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#' @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)
}