[Returnanalytics-commits] r3630 - pkg/PerformanceAnalytics/R
noreply at r-forge.r-project.org
noreply at r-forge.r-project.org
Wed Apr 15 20:27:14 CEST 2015
Author: kylebalkissoon
Date: 2015-04-15 20:27:13 +0200 (Wed, 15 Apr 2015)
New Revision: 3630
Added:
pkg/PerformanceAnalytics/R/chart.TimeSeries.base.R
Modified:
pkg/PerformanceAnalytics/R/chart.TimeSeries.R
Log:
Added dygraph support see chart.TimeSeries.R and kept original code in chart.TimeSeries.base.R
Modified: pkg/PerformanceAnalytics/R/chart.TimeSeries.R
===================================================================
--- pkg/PerformanceAnalytics/R/chart.TimeSeries.R 2015-04-15 00:10:21 UTC (rev 3629)
+++ pkg/PerformanceAnalytics/R/chart.TimeSeries.R 2015-04-15 18:27:13 UTC (rev 3630)
@@ -1,375 +1,323 @@
-#' Creates a time series chart with some extensions.
-#'
-#' Draws a line chart and labels the x-axis with the appropriate dates. This
-#' is really a "primitive", since it extends the base \code{\link{plot}} and
-#' standardizes the elements of a chart. Adds attributes for shading areas of
-#' the timeline or aligning vertical lines along the timeline. This function is
-#' intended to be used inside other charting functions.
-#'
-#'
-#' @param R an xts, vector, matrix, data frame, timeSeries or zoo object of
-#' asset returns
-#' @param auto.grid if true, draws a grid aligned with the points on the x and
-#' y axes
-#' @param grid.color sets the color for the reference grid
-#' @param grid.lty defines the line type for the grid
-#' @param xaxis if true, draws the x axis
-#' @param yaxis if true, draws the y axis
-#' @param yaxis.right if true, draws the y axis on the right-hand side of the
-#' plot
-#' @param type set the chart type, same as in \code{\link{plot}}
-#' @param lty set the line type, same as in \code{\link{plot}}
-#' @param lwd set the line width, same as in \code{\link{plot}}
-#' @param las set the axis label rotation, same as in \code{\link{plot}}
-#' @param main set the chart title, same as in \code{\link{plot}}
-#' @param ylab set the y-axis label, same as in \code{\link{plot}}
-#' @param xlab set the x-axis label, same as in \code{\link{plot}}
-#' @param date.format re-format the dates for the xaxis; the default is "\%m/\%y"
-#' @param xlim set the x-axis limit, same as in \code{\link{plot}}
-#' @param ylim set the y-axis limit, same as in \code{\link{plot}}
-#' @param event.lines If not null, vertical lines will be drawn to indicate
-#' that an event happened during that time period. \code{event.lines} should
-#' be a list of dates (e.g., \code{c("09/03","05/06"))} formatted the same as
-#' date.format. This function matches the re-formatted row names (dates) with
-#' the events.list, so to get a match the formatting needs to be correct.
-#' @param event.labels if not null and event.lines is not null, this will apply
-#' a list of text labels (e.g., \code{c("This Event", "That Event")} to the
-#' vertical lines drawn. See the example below.
-#' @param period.areas these are shaded areas described by start and end dates
-#' in a vector of xts date rangees, e.g.,
-#' \code{c("1926-10::1927-11","1929-08::1933-03")} See the examples below.
-#' @param event.color draws the event described in \code{event.labels} in the
-#' color specified
-#' @param period.color draws the shaded region described by \code{period.areas}
-#' in the color specified
-#' @param colorset color palette to use, set by default to rational choices
-#' @param pch symbols to use, see also \code{\link{plot}}
-#' @param element.color provides the color for drawing chart elements, such as
-#' the box lines, axis lines, etc. Default is "darkgray"
-#' @param legend.loc places a legend into one of nine locations on the chart:
-#' bottomright, bottom, bottomleft, left, topleft, top, topright, right, or
-#' center.
-#' @param ylog TRUE/FALSE set the y-axis to logarithmic scale, similar to
-#' \code{\link{plot}}, default FALSE
-#' @param date.format.in allows specification of other date formats in the data
-#' object, defaults to "\%Y-\%m-\%d"
-#' @param cex.axis The magnification to be used for axis annotation relative to
-#' the current setting of 'cex', same as in \code{\link{plot}}.
-#' @param cex.legend The magnification to be used for sizing the legend
-#' relative to the current setting of 'cex'.
-#' @param cex.labels The magnification to be used for event line labels
-#' relative to the current setting of 'cex'.
-#' @param cex.lab The magnification to be used for x- and y-axis labels
-#' relative to the current setting of 'cex'.
-#' @param cex.main The magnification to be used for the chart title relative to
-#' the current setting of 'cex'.
-#' @param major.ticks Should major tickmarks be drawn and labeled, default
-#' 'auto'
-#' @param minor.ticks Should minor tickmarks be drawn, default TRUE
-#' @param xaxis.labels Allows for non-date labeling of date axes, default is
-#' NULL
-#' @param space default 0
-#' @param \dots any other passthru parameters
-#' @author Peter Carl
-#' @seealso \code{\link{plot}}, \code{\link{par}},
-#' \code{\link[xts]{axTicksByTime}}
-###keywords ts multivariate distribution models hplot
-#' @examples
-#'
-#'
-#' # These are start and end dates, formatted as xts ranges.
-#' ## http://www.nber.org-cycles.html
-#' cycles.dates<-c("1857-06/1858-12",
-#' "1860-10/1861-06",
-#' "1865-04/1867-12",
-#' "1869-06/1870-12",
-#' "1873-10/1879-03",
-#' "1882-03/1885-05",
-#' "1887-03/1888-04",
-#' "1890-07/1891-05",
-#' "1893-01/1894-06",
-#' "1895-12/1897-06",
-#' "1899-06/1900-12",
-#' "1902-09/1904-08",
-#' "1907-05/1908-06",
-#' "1910-01/1912-01",
-#' "1913-01/1914-12",
-#' "1918-08/1919-03",
-#' "1920-01/1921-07",
-#' "1923-05/1924-07",
-#' "1926-10/1927-11",
-#' "1929-08/1933-03",
-#' "1937-05/1938-06",
-#' "1945-02/1945-10",
-#' "1948-11/1949-10",
-#' "1953-07/1954-05",
-#' "1957-08/1958-04",
-#' "1960-04/1961-02",
-#' "1969-12/1970-11",
-#' "1973-11/1975-03",
-#' "1980-01/1980-07",
-#' "1981-07/1982-11",
-#' "1990-07/1991-03",
-#' "2001-03/2001-11",
-#' "2007-12/2009-06"
-#' )
-#' # Event lists - FOR BEST RESULTS, KEEP THESE DATES IN ORDER
-#' risk.dates = c(
-#' "Oct 87",
-#' "Feb 94",
-#' "Jul 97",
-#' "Aug 98",
-#' "Oct 98",
-#' "Jul 00",
-#' "Sep 01")
-#' risk.labels = c(
-#' "Black Monday",
-#' "Bond Crash",
-#' "Asian Crisis",
-#' "Russian Crisis",
-#' "LTCM",
-#' "Tech Bubble",
-#' "Sept 11")
-#' data(edhec)
-#'
-#' R=edhec[,"Funds of Funds",drop=FALSE]
-#' Return.cumulative = cumprod(1+R) - 1
-#' chart.TimeSeries(Return.cumulative)
-#' chart.TimeSeries(Return.cumulative, colorset = "darkblue",
-#' legend.loc = "bottomright",
-#' period.areas = cycles.dates,
-#' period.color = "lightblue",
-#' event.lines = risk.dates,
-#' event.labels = risk.labels,
-#' event.color = "red", lwd = 2)
-#'
-#' @export
-chart.TimeSeries <-
-function (R,
- auto.grid=TRUE,
- xaxis = TRUE,
- yaxis = TRUE,
- yaxis.right = FALSE,
- type = "l",
- lty = 1,
- lwd = 2,
- las = par("las"),
- main = NULL,
- ylab=NULL,
- xlab="",
- date.format.in="%Y-%m-%d",
- date.format = NULL,
- xlim = NULL,
- ylim = NULL,
- element.color="darkgray",
- event.lines = NULL,
- event.labels = NULL,
- period.areas = NULL,
- event.color = "darkgray",
- period.color = "aliceblue", colorset = (1:12),
- pch = (1:12),
- legend.loc = NULL,
- ylog = FALSE,
- cex.axis=0.8,
- cex.legend = 0.8,
- cex.lab = 1,
- cex.labels = 0.8,
- cex.main = 1,
- major.ticks='auto',
- minor.ticks=TRUE,
- grid.color="lightgray",
- grid.lty="dotted",
- xaxis.labels = NULL, ...)
-{ # @author Peter Carl, Brian Peterson
-
- # DESCRIPTION:
- # Draws a line chart and labels the x-axis with the appropriate dates.
- # This is really a "primitive", since it constructs the elements of a plot
- # to provide lines for each column of data provided.
-
- # Inputs:
- # R = assumes that data is a regular time series, not irregular. Can take
- # any type of object, whether a matrix, data frame, or timeSeries.
- # date.format: allows passing of a date format for the xaxis
- # legend.loc = use this to locate the legend, e.g., "topright"
- # colorset = use the name of any of the palattes above
- # reference.grid = if true, draws a grid aligned with the points on the
- # x and y axes.
- # xaxis = if true, draws the x axis.
- # event.lines = if not null, will draw vertical lines indicating that an
- # event happened during that time period. event.lines should be a list
- # of dates (e.g., c("09/03","05/06")) formatted the same as date.format.
- # This function matches the re-formatted row names (dates) with the
- # events.list, so to get a match the formatting needs to be correct.
- # event.labels = if not null and event.lines is not null, this will apply
- # labels to the vertical lines drawn.
-
- # All other inputs are the same as "plot" and are principally included
- # so that some sensible defaults could be set.
-
- # Output:
- # Draws a timeseries graph of type "line" with some sensible defaults.
-
- # FUNCTION:
-
- y = checkData(R)
-
- # Set up dimensions and labels
- columns = ncol(y)
- rows = nrow(y)
- columnnames = colnames(y)
-
- if (is.null(date.format)){
- freq = periodicity(y)
- yr_eq <- ifelse(format(index(first(y)),format="%Y")==format(index(last(y)),format="%Y"),TRUE,FALSE)
- switch(freq$scale,
- seconds = { date.format = "%H:%M"},
- minute = { date.format = "%H:%M"},
- hourly = {date.format = "%d %H"},
- daily = {if (yr_eq) date.format = "%b %d" else date.format = "%Y-%m-%d"},
- weekly = {if (yr_eq) date.format = "%b %d" else date.format = "%Y-%m-%d"},
- monthly = {if (yr_eq) date.format = "%b" else date.format = "%b %y"},
- quarterly = {if (yr_eq) date.format = "%b" else date.format = "%b %y"},
- yearly = {date.format = "%Y"}
- )
- }
- # Needed for finding aligned dates for event lines and period areas
- rownames = as.Date(time(y))
- rownames = format(strptime(rownames,format = date.format.in), date.format)
-
- time.scale = periodicity(y)$scale
- ep = axTicksByTime(y,major.ticks, format.labels = date.format)
-
- # If the Y-axis is ln
- logaxis = ""
- if(ylog) {
- logaxis = "y"
- }
-
- plot.new()
-
- if(is.null(xlim[1])) # is.na or is.null?
- xlim = c(1,rows)
- if(is.null(ylim[1])){
- ylim = as.numeric(range(y, na.rm=TRUE))
- }
- plot.window(xlim, ylim, xaxs = "r", log = logaxis)
-
- # par("usr"): A vector of the form 'c(x1, x2, y1, y2)' giving the extremes
- # of the user coordinates of the plotting region. When a
- # logarithmic scale is in use (i.e., 'par("xlog")' is true, see
- # below), then the x-limits will be '10 ^ par("usr")[1:2]'.
- # Similarly for the y-axis.
-
- if(is.null(ylab)) {
- if(ylog)
- ylab = "ln(Value)"
-
- else
- ylab = "Value"
- }
-
- if(ylog)
- dimensions=10^par("usr")
- else
- dimensions = par("usr")
-
- # Draw any areas in the background
- if(!is.null(period.areas)) {
- # build a list of specific dates to find from xts ranges given
- period.dat = lapply(period.areas,function(x,y) c(first(index(y[x])),last(index(y[x]))),y=y)
- period.ind = NULL
- for(period in 1:length(period.dat)){
- if(!is.na(period.dat[[period]][1])){
- period.ind = list(grep(period.dat[[period]][1], index(y)), grep(period.dat[[period]][2], index(y)))
- rect(period.ind[1], dimensions[3], period.ind[2], dimensions[4], col = period.color, border=NA)
- }
- }
- }
-
- # Draw the grid
- if(auto.grid) {
- abline(v=ep, col=grid.color, lty=grid.lty)
- grid(NA, NULL, col = grid.color)
- }
-
- # Draw a solid reference line at zero
- abline(h = 0, col = element.color)
-
- # Add event.lines before drawing the data
- # This only labels the dates it finds
- if(!is.null(event.lines)) {
- event.ind = NULL
- for(event in 1:length(event.lines)){
- event.ind = c(event.ind, grep(event.lines[event], rownames))
- }
- number.event.labels = ((length(event.labels)-length(event.ind) + 1):length(event.labels))
-
- abline(v = event.ind, col = event.color, lty = 2)
- if(!is.null(event.labels)) {
- text(x=event.ind,y=ylim[2], label = event.labels[number.event.labels], offset = .2, pos = 2, cex = cex.labels, srt=90, col = event.color)
- }
- }
-
- # Expand the attributes to #columns if fewer values are passed in
- # (e.g., only one), to allow the user to pass in line, type, or
- # symbol variations.
- if(length(lwd) < columns)
- lwd = rep(lwd,columns)
- if(length(lty) < columns)
- lty = rep(lty,columns)
- if(length(pch) < columns)
- pch = rep(pch,columns)
-
- for(column in columns:1) {
- lines(1:rows, y[,column], col = colorset[column], lwd = lwd[column], pch = pch[column], lty = lty[column], type = type, ...)
- }
-
- if (xaxis) {
- if(minor.ticks)
- axis(1, at=1:NROW(y), labels=FALSE, col='#BBBBBB', las=las)
- label.height = cex.axis *(.5 + apply(t(names(ep)),1, function(X) max(strheight(X, units="in")/par('cin')[2]) ))
- if(is.null(xaxis.labels))
- xaxis.labels = names(ep)
- else
- ep = 1:length(xaxis.labels)
- axis(1, at=ep, labels=xaxis.labels, las=1, lwd=1, mgp=c(3,label.height,0), cex.axis = cex.axis, las=las)
-# axis(1, at=ep, labels=xaxis.labels, las=1, lwd=1, mgp=c(3,2,0), cex.axis = cex.axis)
- #axis(1, at = lab.ind, lab=rownames[lab.ind], cex.axis = cex.axis, col = elementcolor)
- title(xlab = xlab, cex = cex.lab)
- # use axis(..., las=3) for vertical labels.
- }
-
- # set up y-axis
- if (yaxis)
- if(yaxis.right)
- axis(4, cex.axis = cex.axis, col=element.color, ylog=ylog, las=las)
- else
- axis(2, cex.axis = cex.axis, col=element.color, ylog=ylog, las=las)
- box(col = element.color)
-
- if(!is.null(legend.loc)){
- # There's no good place to put this automatically, except under the graph.
- # That requires a different solution, but here's the quick fix
- legend(legend.loc, inset = 0.02, text.col = colorset, col = colorset, cex = cex.legend, border.col = element.color, lty = lty, lwd = 2, bg = "white", legend = columnnames, pch=pch)
- }
-
- # Add the other titles
- if(is.null(main))
- main=columnnames[1]
- title(ylab = ylab, cex.lab = cex.lab)
- title(main = main, cex.main = cex.main)
-
-}
-
-###############################################################################
-# R (http://r-project.org/) Econometrics for Performance and Risk Analysis
-#
-# Copyright (c) 2004-2015 Peter Carl and Brian G. Peterson
-#
-# This R package is distributed under the terms of the GNU Public License (GPL)
-# for full details see the file COPYING
-#
-# $Id$
-#
-###############################################################################
+#' Creates a time series chart with some extensions.
+#'
+#' Draws a line chart and labels the x-axis with the appropriate dates. This
+#' is really a "primitive", since it extends the base \code{\link{plot}} and
+#' standardizes the elements of a chart. Adds attributes for shading areas of
+#' the timeline or aligning vertical lines along the timeline. This function is
+#' intended to be used inside other charting functions.
+#'
+#'
+#' @param R an xts, vector, matrix, data frame, timeSeries or zoo object of
+#' asset returns
+#' @param auto.grid if true, draws a grid aligned with the points on the x and
+#' y axes
+#' @param grid.color sets the color for the reference grid
+#' @param grid.lty defines the line type for the grid
+#' @param xaxis if true, draws the x axis
+#' @param yaxis if true, draws the y axis
+#' @param yaxis.right if true, draws the y axis on the right-hand side of the
+#' plot
+#' @param type set the chart type, same as in \code{\link{plot}}
+#' @param lty set the line type, same as in \code{\link{plot}}
+#' @param lwd set the line width, same as in \code{\link{plot}}
+#' @param las set the axis label rotation, same as in \code{\link{plot}}
+#' @param main set the chart title, same as in \code{\link{plot}}
+#' @param ylab set the y-axis label, same as in \code{\link{plot}}
+#' @param xlab set the x-axis label, same as in \code{\link{plot}}
+#' @param date.format re-format the dates for the xaxis; the default is "\%m/\%y"
+#' @param xlim set the x-axis limit, same as in \code{\link{plot}}
+#' @param ylim set the y-axis limit, same as in \code{\link{plot}}
+#' @param event.lines If not null, vertical lines will be drawn to indicate
+#' that an event happened during that time period. \code{event.lines} should
+#' be a list of dates (e.g., \code{c("09/03","05/06"))} formatted the same as
+#' date.format. This function matches the re-formatted row names (dates) with
+#' the events.list, so to get a match the formatting needs to be correct.
+#' @param event.labels if not null and event.lines is not null, this will apply
+#' a list of text labels (e.g., \code{c("This Event", "That Event")} to the
+#' vertical lines drawn. See the example below.
+#' @param period.areas these are shaded areas described by start and end dates
+#' in a vector of xts date rangees, e.g.,
+#' \code{c("1926-10::1927-11","1929-08::1933-03")} See the examples below.
+#' @param event.color draws the event described in \code{event.labels} in the
+#' color specified
+#' @param period.color draws the shaded region described by \code{period.areas}
+#' in the color specified
+#' @param colorset color palette to use, set by default to rational choices
+#' @param pch symbols to use, see also \code{\link{plot}}
+#' @param element.color provides the color for drawing chart elements, such as
+#' the box lines, axis lines, etc. Default is "darkgray"
+#' @param legend.loc places a legend into one of nine locations on the chart:
+#' bottomright, bottom, bottomleft, left, topleft, top, topright, right, or
+#' center.
+#' @param ylog TRUE/FALSE set the y-axis to logarithmic scale, similar to
+#' \code{\link{plot}}, default FALSE
+#' @param date.format.in allows specification of other date formats in the data
+#' object, defaults to "\%Y-\%m-\%d"
+#' @param cex.axis The magnification to be used for axis annotation relative to
+#' the current setting of 'cex', same as in \code{\link{plot}}.
+#' @param cex.legend The magnification to be used for sizing the legend
+#' relative to the current setting of 'cex'.
+#' @param cex.labels The magnification to be used for event line labels
+#' relative to the current setting of 'cex'.
+#' @param cex.lab The magnification to be used for x- and y-axis labels
+#' relative to the current setting of 'cex'.
+#' @param cex.main The magnification to be used for the chart title relative to
+#' the current setting of 'cex'.
+#' @param major.ticks Should major tickmarks be drawn and labeled, default
+#' 'auto'
+#' @param minor.ticks Should minor tickmarks be drawn, default TRUE
+#' @param xaxis.labels Allows for non-date labeling of date axes, default is
+#' NULL
+#' @param space default 0
+#' @param dygraphPlot Plot using dygraphs default FALSE
+#' @param \dots any other passthru parameters
+#' @author Peter Carl
+#' @seealso \code{\link{plot}}, \code{\link{par}},
+#' \code{\link[xts]{axTicksByTime}}
+###keywords ts multivariate distribution models hplot
+#' @examples
+#'
+#'
+#' # These are start and end dates, formatted as xts ranges.
+#' ## http://www.nber.org-cycles.html
+#' cycles.dates<-c("1857-06/1858-12",
+#' "1860-10/1861-06",
+#' "1865-04/1867-12",
+#' "1869-06/1870-12",
+#' "1873-10/1879-03",
+#' "1882-03/1885-05",
+#' "1887-03/1888-04",
+#' "1890-07/1891-05",
+#' "1893-01/1894-06",
+#' "1895-12/1897-06",
+#' "1899-06/1900-12",
+#' "1902-09/1904-08",
+#' "1907-05/1908-06",
+#' "1910-01/1912-01",
+#' "1913-01/1914-12",
+#' "1918-08/1919-03",
+#' "1920-01/1921-07",
+#' "1923-05/1924-07",
+#' "1926-10/1927-11",
+#' "1929-08/1933-03",
+#' "1937-05/1938-06",
+#' "1945-02/1945-10",
+#' "1948-11/1949-10",
+#' "1953-07/1954-05",
+#' "1957-08/1958-04",
+#' "1960-04/1961-02",
+#' "1969-12/1970-11",
+#' "1973-11/1975-03",
+#' "1980-01/1980-07",
+#' "1981-07/1982-11",
+#' "1990-07/1991-03",
+#' "2001-03/2001-11",
+#' "2007-12/2009-06"
+#' )
+#' # Event lists - FOR BEST RESULTS, KEEP THESE DATES IN ORDER
+#' risk.dates = c(
+#' "Oct 87",
+#' "Feb 94",
+#' "Jul 97",
+#' "Aug 98",
+#' "Oct 98",
+#' "Jul 00",
+#' "Sep 01")
+#' risk.labels = c(
+#' "Black Monday",
+#' "Bond Crash",
+#' "Asian Crisis",
+#' "Russian Crisis",
+#' "LTCM",
+#' "Tech Bubble",
+#' "Sept 11")
+#' data(edhec)
+#'
+#' R=edhec[,"Funds of Funds",drop=FALSE]
+#' Return.cumulative = cumprod(1+R) - 1
+#' chart.TimeSeries(Return.cumulative)
+#' chart.TimeSeries(Return.cumulative, colorset = "darkblue",
+#' legend.loc = "bottomright",
+#' period.areas = cycles.dates,
+#' period.color = "lightblue",
+#' event.lines = risk.dates,
+#' event.labels = risk.labels,
+#' event.color = "red", lwd = 2)
+#'
+#' @export
+chart.TimeSeries <-
+function (R,
+ auto.grid=TRUE,
+ xaxis = TRUE,
+ yaxis = TRUE,
+ yaxis.right = FALSE,
+ type = "l",
+ lty = 1,
+ lwd = 2,
+ las = par("las"),
+ main = NULL,
+ ylab=NULL,
+ xlab="",
+ date.format.in="%Y-%m-%d",
+ date.format = NULL,
+ xlim = NULL,
+ ylim = NULL,
+ element.color="darkgray",
+ event.lines = NULL,
+ event.labels = NULL,
+ period.areas = NULL,
+ event.color = "darkgray",
+ period.color = "aliceblue", colorset = (1:12),
+ pch = (1:12),
+ legend.loc = NULL,
+ ylog = FALSE,
+ cex.axis=0.8,
+ cex.legend = 0.8,
+ cex.lab = 1,
+ cex.labels = 0.8,
+ cex.main = 1,
+ major.ticks='auto',
+ minor.ticks=TRUE,
+ grid.color="lightgray",
+ grid.lty="dotted",
+ xaxis.labels = NULL,
+ dygraphPlot=FALSE,...)
+{ # @author Peter Carl, Brian Peterson
+
+ # DESCRIPTION:
+ # Draws a line chart and labels the x-axis with the appropriate dates.
+ # This is really a "primitive", since it constructs the elements of a plot
+ # to provide lines for each column of data provided.
+
+ # Inputs:
+ # R = assumes that data is a regular time series, not irregular. Can take
+ # any type of object, whether a matrix, data frame, or timeSeries.
+ # date.format: allows passing of a date format for the xaxis
+ # legend.loc = use this to locate the legend, e.g., "topright"
+ # colorset = use the name of any of the palattes above
+ # reference.grid = if true, draws a grid aligned with the points on the
+ # x and y axes.
+ # xaxis = if true, draws the x axis.
+ # event.lines = if not null, will draw vertical lines indicating that an
+ # event happened during that time period. event.lines should be a list
+ # of dates (e.g., c("09/03","05/06")) formatted the same as date.format.
+ # This function matches the re-formatted row names (dates) with the
+ # events.list, so to get a match the formatting needs to be correct.
+ # event.labels = if not null and event.lines is not null, this will apply
+ # labels to the vertical lines drawn.
+
+ # All other inputs are the same as "plot" and are principally included
+ # so that some sensible defaults could be set.
+
+ # Output:
+ # Draws a timeseries graph of type "line" with some sensible defaults.
+
+ # FUNCTION:
+
+ y = checkData(R)
+
+ # Set up dimensions and labels
+ columns = ncol(y)
+ rows = nrow(y)
+ columnnames = colnames(y)
+
+ if (is.null(date.format)){
+ freq = periodicity(y)
+ yr_eq <- ifelse(format(index(first(y)),format="%Y")==format(index(last(y)),format="%Y"),TRUE,FALSE)
+ switch(freq$scale,
+ seconds = { date.format = "%H:%M"},
+ minute = { date.format = "%H:%M"},
+ hourly = {date.format = "%d %H"},
+ daily = {if (yr_eq) date.format = "%b %d" else date.format = "%Y-%m-%d"},
+ weekly = {if (yr_eq) date.format = "%b %d" else date.format = "%Y-%m-%d"},
+ monthly = {if (yr_eq) date.format = "%b" else date.format = "%b %y"},
+ quarterly = {if (yr_eq) date.format = "%b" else date.format = "%b %y"},
+ yearly = {date.format = "%Y"}
+ )
+ }
+ # Needed for finding aligned dates for event lines and period areas
+ rownames = as.Date(time(y))
+ rownames = format(strptime(rownames,format = date.format.in), date.format)
+
+ time.scale = periodicity(y)$scale
+ ep = axTicksByTime(y,major.ticks, format.labels = date.format)
+
+ # If the Y-axis is ln
+ logaxis = ""
+ if(ylog) {
+ logaxis = "y"
+ }
+
+
+ if(dygraphPlot==FALSE){
+ chart.TimeSeries.base(R,
+ auto.grid,
+ xaxis,
+ yaxis,
+ yaxis.right,
+ type,
+ lty,
+ lwd ,
+ las ,
+ main ,
+ ylab,
+ xlab,
+ date.format.in,
+ date.format ,
+ xlim ,
+ ylim ,
+ element.color,
+ event.lines,
+ event.labels,
+ period.areas,
+ event.color ,
+ period.color , colorset ,
+ pch,
+ legend.loc ,
+ ylog ,
+ cex.axis,
+ cex.legend ,
+ cex.lab ,
+ cex.labels,
+ cex.main ,
+ major.ticks,
+ minor.ticks,
+ grid.color,
+ grid.lty,
+ xaxis.labels,...)
+
+
+
+
+ }else{
+ if(is.null(main))
+ main=columnnames[1]
+
+ if(is.null(ylab)) {
+ if(ylog)
+ ylab = "ln(Value)"
+
+ else
+ ylab = "Value"
+ }
+
+ ##@TODO Get all the graphical parameters integrated with these two
+ dyRangeSelector(dygraph(y,main = main,
+ xlab = xlab,
+ ylab = ylab))
+
+ }
+
+}
+
+###############################################################################
+# R (http://r-project.org/) Econometrics for Performance and Risk Analysis
+#
+# Copyright (c) 2004-2015 Peter Carl and Brian G. Peterson
+#
+# This R package is distributed under the terms of the GNU Public License (GPL)
+# for full details see the file COPYING
+#
+# $Id$
+#
+###############################################################################
Added: pkg/PerformanceAnalytics/R/chart.TimeSeries.base.R
===================================================================
--- pkg/PerformanceAnalytics/R/chart.TimeSeries.base.R (rev 0)
+++ pkg/PerformanceAnalytics/R/chart.TimeSeries.base.R 2015-04-15 18:27:13 UTC (rev 3630)
@@ -0,0 +1,375 @@
+#' Creates a time series chart with some extensions.
+#'
+#' Draws a line chart and labels the x-axis with the appropriate dates. This
+#' is really a "primitive", since it extends the base \code{\link{plot}} and
+#' standardizes the elements of a chart. Adds attributes for shading areas of
+#' the timeline or aligning vertical lines along the timeline. This function is
+#' intended to be used inside other charting functions.
+#'
+#'
+#' @param R an xts, vector, matrix, data frame, timeSeries or zoo object of
+#' asset returns
+#' @param auto.grid if true, draws a grid aligned with the points on the x and
+#' y axes
+#' @param grid.color sets the color for the reference grid
+#' @param grid.lty defines the line type for the grid
+#' @param xaxis if true, draws the x axis
+#' @param yaxis if true, draws the y axis
+#' @param yaxis.right if true, draws the y axis on the right-hand side of the
+#' plot
+#' @param type set the chart type, same as in \code{\link{plot}}
+#' @param lty set the line type, same as in \code{\link{plot}}
+#' @param lwd set the line width, same as in \code{\link{plot}}
+#' @param las set the axis label rotation, same as in \code{\link{plot}}
+#' @param main set the chart title, same as in \code{\link{plot}}
+#' @param ylab set the y-axis label, same as in \code{\link{plot}}
+#' @param xlab set the x-axis label, same as in \code{\link{plot}}
+#' @param date.format re-format the dates for the xaxis; the default is "\%m/\%y"
+#' @param xlim set the x-axis limit, same as in \code{\link{plot}}
+#' @param ylim set the y-axis limit, same as in \code{\link{plot}}
+#' @param event.lines If not null, vertical lines will be drawn to indicate
+#' that an event happened during that time period. \code{event.lines} should
+#' be a list of dates (e.g., \code{c("09/03","05/06"))} formatted the same as
+#' date.format. This function matches the re-formatted row names (dates) with
+#' the events.list, so to get a match the formatting needs to be correct.
+#' @param event.labels if not null and event.lines is not null, this will apply
+#' a list of text labels (e.g., \code{c("This Event", "That Event")} to the
+#' vertical lines drawn. See the example below.
+#' @param period.areas these are shaded areas described by start and end dates
+#' in a vector of xts date rangees, e.g.,
+#' \code{c("1926-10::1927-11","1929-08::1933-03")} See the examples below.
+#' @param event.color draws the event described in \code{event.labels} in the
+#' color specified
+#' @param period.color draws the shaded region described by \code{period.areas}
+#' in the color specified
+#' @param colorset color palette to use, set by default to rational choices
+#' @param pch symbols to use, see also \code{\link{plot}}
+#' @param element.color provides the color for drawing chart elements, such as
+#' the box lines, axis lines, etc. Default is "darkgray"
+#' @param legend.loc places a legend into one of nine locations on the chart:
+#' bottomright, bottom, bottomleft, left, topleft, top, topright, right, or
+#' center.
+#' @param ylog TRUE/FALSE set the y-axis to logarithmic scale, similar to
+#' \code{\link{plot}}, default FALSE
+#' @param date.format.in allows specification of other date formats in the data
+#' object, defaults to "\%Y-\%m-\%d"
+#' @param cex.axis The magnification to be used for axis annotation relative to
+#' the current setting of 'cex', same as in \code{\link{plot}}.
+#' @param cex.legend The magnification to be used for sizing the legend
+#' relative to the current setting of 'cex'.
+#' @param cex.labels The magnification to be used for event line labels
+#' relative to the current setting of 'cex'.
+#' @param cex.lab The magnification to be used for x- and y-axis labels
+#' relative to the current setting of 'cex'.
+#' @param cex.main The magnification to be used for the chart title relative to
+#' the current setting of 'cex'.
+#' @param major.ticks Should major tickmarks be drawn and labeled, default
+#' 'auto'
+#' @param minor.ticks Should minor tickmarks be drawn, default TRUE
+#' @param xaxis.labels Allows for non-date labeling of date axes, default is
+#' NULL
+#' @param space default 0
+#' @param \dots any other passthru parameters
+#' @author Peter Carl
+#' @seealso \code{\link{plot}}, \code{\link{par}},
+#' \code{\link[xts]{axTicksByTime}}
+###keywords ts multivariate distribution models hplot
+#' @examples
+#'
+#'
+#' # These are start and end dates, formatted as xts ranges.
+#' ## http://www.nber.org-cycles.html
+#' cycles.dates<-c("1857-06/1858-12",
[TRUNCATED]
To get the complete diff run:
svnlook diff /svnroot/returnanalytics -r 3630
More information about the Returnanalytics-commits
mailing list