| Type: | Package | 
| Title: | Time Series Plot | 
| Version: | 0.1.5 | 
| Description: | A fast and elegant time series visualization package. In addition to the standard R plot types, this package supports candle sticks, open-high-low-close, and volume plots. Useful for visualizing any time series data, e.g., stock prices and technical indicators. | 
| License: | MIT + file LICENSE | 
| Imports: | xts, quantmod, zoo, RColorBrewer | 
| Suggests: | TTR | 
| URL: | https://bitbucket.org/rtsvizteam/rtsplot | 
| BugReports: | https://bitbucket.org/rtsvizteam/rtsplot/issues | 
| LazyLoad: | yes | 
| RoxygenNote: | 7.2.3 | 
| NeedsCompilation: | no | 
| Packaged: | 2023-09-23 23:49:41 UTC; pcadmin | 
| Author: | RTSVizTeam [aut, cph], Irina Kapler [cre] | 
| Maintainer: | Irina Kapler <irkapler@gmail.com> | 
| Repository: | CRAN | 
| Date/Publication: | 2023-09-24 00:10:02 UTC | 
'rtsplot' - Time series plot with base R Graphics.
Description
Plot time series data with base R Graphics.
The 'rtsplot' package is **fast** time series plot package with base R Graphics.
Usage
rtsplot(
  y,
  main = NULL,
  plotX = TRUE,
  LeftMargin = 0,
  grid = "xy",
  x.highlight = NULL,
  y.highlight = NULL,
  y.highlight.col = NULL,
  las = 1,
  type = "l",
  xlab = "",
  ylab = "",
  ylim = NULL,
  log = "",
  skip.breaks = FALSE,
  xaxis.map = rtsplot.create.xaxis.map,
  ...
)
Arguments
| y | 
 | 
| main | plot title | 
| plotX | flag to display X axis | 
| LeftMargin | to plot second Y axis, set LeftMargin=3, defaults to 0 | 
| grid | which grid lines to draw, defaults to 'xy' | 
| x.highlight | segments to highlight along X axis, defaults to NULL | 
| y.highlight | segments to highlight along Y axis, defaults to NULL | 
| y.highlight.col | color to highlight segments Y axis, defaults to NULL | 
| las | rotation of Y axis labels, defaults to 1, for more info see  | 
| type | plot type, defaults to 'l', for more info see  | 
| xlab | X label, defaults to ”, for more info see  | 
| ylab | Y label, defaults to ”, for more info see  | 
| ylim | range on Y values, defaults to NULL | 
| log | log scale x, y, xy axes, defaults to ” | 
| skip.breaks | flag to skip plotting missing date/times (i.e. nights and weekends), defaults to FALSE | 
| xaxis.map | xaxis map function used if skip.breaks is TRUE, defaults to rtsplot.create.xaxis.map | 
| ... | additional parameters to the  | 
Value
nothing
Author(s)
Maintainer: Irina Kapler irkapler@gmail.com
Authors:
- RTSVizTeam rtsvizteam@gmail.com [copyright holder] 
See Also
Useful links:
- Report bugs at https://bitbucket.org/rtsvizteam/rtsplot/issues 
Examples
# generate time series data
y = rtsplot.fake.stock.data(1000)
symbol = 'Test'
sma = TTR::SMA(y, 250)
rsi = TTR::RSI(y, 20)	
# plot candles and RSI charts
layout(c(1,1,1,2))
cols = rtsplot.colors(2)
	
rtsplot(y, type = 'l', plotX = FALSE, col=cols[1],lwd=1.5)
	rtsplot.lines(sma, col=cols[2], lwd=1.5)
	rtsplot.legend(c(symbol, 'SMA(250)'), cols[1:2], list(y,sma))
	
# plot rsi
rtsplot(rsi, type = 'l', ylim=c(0,100),
	y.highlight = c(c(0,30), c(70,100)),
	y.highlight.col = grDevices::adjustcolor(c('green','red'), 50/255)
)	
rtsplot.legend('RSI(20)', 'black', rsi)
y = rtsplot.fake.stock.data(1000)
symbol = 'SPY'
	
 # simple example
 highlight = which(y < 10)
 # plot
 layout(1)
 rtsplot.theme.set(col.x.highlight=grDevices::adjustcolor('orange', 200/255))
		
 rtsplot(y, type = 'l', main = symbol, x.highlight = highlight)
 # 'skip.breaks' example with daily data
 y = rtsplot.fake.stock.data(10, remove.non.trading = TRUE)
 
 layout(1:2)
 rtsplot(y, type='b')
	rtsplot.legend('skip.breaks=FALSE', text.col='red')
 rtsplot(y, type='b', skip.breaks=TRUE)
	rtsplot.legend('skip.breaks=TRUE', text.col='red')
 
 # 'skip.breaks' example with intra-day data
 y = rtsplot.fake.stock.data(5*24*60, period = 'minute', remove.non.trading = TRUE)
 
 layout(1:2)
 rtsplot(y, type='l')
	rtsplot.legend('skip.breaks=FALSE', text.col='red')
 rtsplot(y, type='l', skip.breaks=TRUE)
	rtsplot.legend('skip.breaks=TRUE', text.col='red')
 
Theme
Description
Setup theme
Usage
register.theme(
  grid.color = "gray90",
  colors = "Set1",
  col.border = "black",
  col.up = "green",
  col.dn = "red",
  col.x.highlight = "orange",
  col.y.highlight = "orange",
  cex = 1,
  legend.bg.col = grDevices::adjustcolor("white", 200/255)
)
rtsplot.theme()
rtsplot.theme.set(...)
rtsplot.colors(n)
Arguments
| grid.color | color for grid lines, defaults to 'gray90' | 
| colors | RColorBrewer set to generate colors, defaults to "Set1" in RColorBrewer | 
| col.border | border color for drawing candles, defaults to 'black' | 
| col.up | up color for drawing candles, defaults to 'green' | 
| col.dn | down color for drawing candles, defaults to 'red' | 
| col.x.highlight | color for highlighting along x axis, defaults to 'orange' | 
| col.y.highlight | color for highlighting along y axis, defaults to 'orange' | 
| cex | font size, defaults to 1 | 
| legend.bg.col | background legend color, defaults to grDevices::adjustcolor('white', 200/255) | 
| ... | additional settings | 
| n | number of colors to generate | 
Value
None
Create Candle Plot
Description
Plot candles if dx is sufficient otherwise ohlc or bars
Usage
rtsplot.candle(
  y,
  col = rtsplot.candle.col(y),
  border = rtsplot.theme()$col.border
)
Arguments
| y | 
 | 
| col | color for bars, defaults to rtsplot.candle.col | 
| border | border color, defaults to rtsplot.theme()$col.border | 
Value
nothing
Examples
y = rtsplot.fake.stock.data(50, ohlc=TRUE)
symbol = 'SPY'
	
 # plot
 layout(1)
 rtsplot(y, type = 'n')
 rtsplot.candle(y)
rtsplot.legend(symbol, 'black', y)
Bar Colors for Candle and Volume plots
Description
Bar Colors for Candle and Volume plots
Usage
rtsplot.candle.col(y)
rtsplot.volume.col(y)
Arguments
| y | 
 | 
Value
colors
Plot corner label
Description
Plot corner label, based on the [text at the upper left corner outside of the plot region](http://r.789695.n4.nabble.com/text-at-the-upper-left-corner-outside-of-the-plot-region-td885675.html)
Usage
rtsplot.corner.label(
  label = NULL,
  col = "black",
  x = -1,
  y = 1,
  xoffset = NA,
  yoffset = NA,
  space = c("plot", "figure"),
  cex = 1,
  border = NA
)
Arguments
| label | label | 
| col | label color | 
| x | x location, defaults to -1 | 
| y | y location, defaults to 1 | 
| xoffset | x offset, defaults to NA | 
| yoffset | y offset, defaults to NA | 
| space | coordinate space, can be "plot" or "figure", defaults to "plot" | 
| cex | font size, defaults to 1 | 
| border | border color, defaults to NA - no color | 
Value
nothing
Examples
 rtsplot.theme.set(legend.bg.col=grDevices::adjustcolor('orange', 200/255))
 plot(rnorm(20), rnorm(20))
 rtsplot.corner.label('test1', y=-1, space='figure')
 rtsplot.corner.label('test2', y=1, space='figure')
 rtsplot.corner.label('test3', x=1, space='figure')
 rtsplot.corner.label('test4', x=1, y=-1, space='figure')
 rtsplot.theme.set(legend.bg.col=grDevices::adjustcolor('white', 50/255))
Generate fake stock data
Description
Generate fake stock data for use in rtsplot examples
Usage
rtsplot.fake.stock.data(
  n,
  y0 = 10,
  stdev = 0.1,
  ohlc = FALSE,
  method = c("normal", "adhoc"),
  period = c("day", "minute"),
  remove.non.trading = FALSE
)
Arguments
| n | number of points to generate | 
| y0 | starting price, defaults to 10 | 
| stdev | standard deviation, defaults to 0.1 | 
| ohlc | generate ohlc data, defaults to FALSE | 
| method | method to generate fake stock data, defaults to 'normal' two methods are implemented: * 'normal' - generate fake stock data assuming returns are normally distributed with zero drift * 'uniform' - generate fake stock data assuming returns are uniformly distributed with zero drift | 
| period | frequency to generate fake stock data, (possible values: "day", "minute"), defaults to "day" | 
| remove.non.trading | flag to remove non trading periods(i.e. weekends and non-trading hours). Note, this flag likely will cause function return less than 'n' observation, defaults to FALSE | 
Value
xts object with fake stock data
Examples
 rtsplot.fake.stock.data(10)
Format numbers using 1000 separator
Description
Format numbers using 1000 separator
Usage
rtsplot.format(temp, nround = 2, sprefix = "", eprefix = "")
Arguments
| temp | numbers | 
| nround | number of rounding digits, defaults to '2' | 
| sprefix | start prefix string, defaults to ” | 
| eprefix | end postfix string, defaults to ” | 
Value
numbers formatted using 1000 separator
Add grid to time series plot
Description
Add grid to time series plot
Usage
rtsplot.grid(grid, xaxis.ticks, col = rtsplot.theme()$grid.color)
Arguments
| grid | which grid lines to draw, defaults to 'xy' | 
| xaxis.ticks | location of x axis ticks | 
| col | grid color, defaults to rtsplot.theme()$grid.color | 
Value
nothing
Create HL Plot
Description
Create HL Plot
Usage
rtsplot.hl(y, col = rtsplot.volume.col(y), border = rtsplot.theme()$col.border)
Arguments
| y | 
 | 
| col | color for bars, defaults to rtsplot.volume.col | 
| border | border color, defaults to rtsplot.theme()$col.border | 
Value
nothing
Examples
y = rtsplot.fake.stock.data(50, ohlc=TRUE)
symbol = 'SPY'
	
 # plot
 layout(1)
 rtsplot(y, type = 'n')
 rtsplot.hl(y)
rtsplot.legend(symbol, 'black', y)
Create layout
Description
Create layout
Usage
rtsplot.layout(ilayout, delim = ",")
Arguments
| ilayout | matrix stored as a string | 
| delim | delimiter, defaults to ',' | 
Value
nothing
Plot legend - shortcut to the legend function
Description
Plot legend - shortcut to the legend function
Usage
rtsplot.legend(
  labels,
  fill = NULL,
  lastobs = NULL,
  x = "topleft",
  merge = FALSE,
  bty = "n",
  border = NA,
  yformat = rtsplot.format,
  cex = 1,
  ...
)
Arguments
| labels | legend labels | 
| fill | fill colors, defaults to NULL | 
| lastobs | list of last observations, defaults to NULL | 
| x | location of legend, defaults to 'topleft' | 
| merge | merge, defaults to FALSE, see  | 
| bty | box, defaults to 'n', see  | 
| border | border color, defaults to NA - no color | 
| yformat | format Y values function, defaults to  | 
| cex | font size, defaults to 1 | 
| ... | other parameters to legend, see  | 
Value
nothing
Examples
y = rtsplot.fake.stock.data(1000)
symbol = 'SPY'
	
 # plot
 layout(1)
 rtsplot(y, type = 'l', col='black')
rtsplot.legend(symbol, 'black', y)
Add lines to time series plot
Description
Add lines to time series plot
Usage
rtsplot.lines(y, type = "l", col = graphics::par("col"), ...)
Arguments
| y | 
 | 
| type | line type, defaults to 'l', for more info see  | 
| col | color, defaults to par('col') | 
| ... | additional parameters to the  | 
Value
nothing
Examples
y = rtsplot.fake.stock.data(1000)
symbol = 'SPY'
	
 # moving average
sma = TTR::SMA(y, 250)
 # plot
 layout(1)
 rtsplot(y, type = 'l', col='black')
 rtsplot.lines(sma, col='blue', lwd=1.5)
rtsplot.legend(c(symbol, 'SMA(250)'), 'black,blue', list(y,sma))
matplot version for xts object
Description
matplot version for xts object
Usage
rtsplot.matplot(
  y,
  dates = NULL,
  ylim = NULL,
  type = "l",
  cols = rtsplot.colors(ncol(y)),
  ...
)
Arguments
| y | 
 | 
| dates | subset of datesdefaults to NULL | 
| ylim | range on Y values, defaults to NULL | 
| type | plot type, defaults to 'l', see  | 
| cols | colors | 
| ... | additional parameters to the  | 
Value
nothing
Create OHLC Plot
Description
Plot ohlc if dx is sufficient otherwise bars
Usage
rtsplot.ohlc(y, col = rtsplot.theme()$col.border)
Arguments
| y | 
 | 
| col | color for bars, defaults to rtsplot.theme()$col.border | 
Value
nothing
Examples
y = rtsplot.fake.stock.data(50, ohlc=TRUE)
symbol = 'SPY'
	
 # plot
 layout(1)
 rtsplot(y, type = 'n')
 rtsplot.ohlc(y)
rtsplot.legend(symbol, 'black', y)
rtsplot.theme.set(legend.bg.col=grDevices::adjustcolor('blue', 25/255))
rtsplot.corner.label('Logo \uA9', x=1, y=-1, cex = 0.7, space='figure', col='blue')
rtsplot.theme.set(legend.bg.col = grDevices::adjustcolor('white', 200/255))
Add polygon to time series plot
Description
Add polygon to time series plot
Usage
rtsplot.polygon(y, col = graphics::par("col"), ...)
Arguments
| y | 
 | 
| col | color, defaults to par('col') | 
| ... | additional parameters to the  | 
Value
nothing
Examples
y = rtsplot.fake.stock.data(1000, ohlc=TRUE) 
symbol = 'SPY'
	
 # moving average
bbands = TTR::BBands(quantmod::HLC(y), n=200, sd=1)[,c('up','dn')]	
 # plot
 layout(1)
 rtsplot(y, type = 'l', col='black')
 col = grDevices::adjustcolor('green', 50/255)
 rtsplot.polygon(bbands, col = col)
rtsplot.legend(c(symbol, 'BBands'), c('black', col), list(y,bbands))
Scale volume
Description
Scale volume
Usage
rtsplot.scale.volume(y)
Arguments
| y | 
 | 
Value
adjusted y object
Create Stacked plot
Description
Create Stacked plot
Usage
rtsplot.stacked(
  x,
  y,
  xlab = "",
  cols = rtsplot.colors(ncol(y)),
  type = c("l", "s"),
  flip.legend = FALSE,
  ...
)
Arguments
| x | dates object | 
| y | matrix with weights | 
| xlab | X label, defaults to ”, for more info see  | 
| cols | colors, defaults to colors  | 
| type | plot type: lines, step stairs c('l','s') | 
| flip.legend | flag to reverse legend order, defaults to FALSE | 
| ... | additional parameters to the  | 
Value
nothing
Add text to time series plot
Description
Add text to time series plot
Usage
rtsplot.text(y, ...)
Arguments
| y | 
 | 
| ... | additional parameters to the  | 
Value
nothing
Examples
y = rtsplot.fake.stock.data(1000)
symbol = 'SPY'
	
 # plot
 layout(1)
 rtsplot(y, type = 'l', col='black')
 rtsplot.text(y[100], 'Text', col='red')
rtsplot.legend(symbol, 'black', y)
Plot volume
Description
Plot volume
Usage
rtsplot.volume(
  y,
  col = rtsplot.volume.col(y),
  border = rtsplot.theme()$col.border
)
Arguments
| y | 
 | 
| col | color for volume bars | 
| border | color for volume bars border | 
Value
nothing
Highlight vertical segments
Description
Highlight vertical segments
Usage
rtsplot.x.highlight(y, highlight, col = rtsplot.theme()$col.x.highlight)
Arguments
| y | 
 | 
| highlight | segments to highlight along X axis | 
| col | highlight color, defaults to rtsplot.control$col.x.highlight | 
Value
nothing
Highlight horizontal segments
Description
Highlight horizontal segments
Usage
rtsplot.y.highlight(highlight, col = rtsplot.theme()$col.y.highlight)
Arguments
| highlight | segments to highlight along Y axis | 
| col | highlight color, defaults to rtsplot.control$col.y.highlight | 
Value
nothing
Examples
# generate time series data
y = rtsplot.fake.stock.data(1000)
rsi = TTR::RSI(y, 20)	
 	
#set up two regions for graphs candlestick price data on top 2/3 of the plot
#and rsi on the bottom 1/3 of the plot
layout(c(1,1,2))  
	
rtsplot(y, type = 'line', plotX = FALSE)
  rtsplot.legend('SPY', 'grey70', y)
rtsplot(rsi, type = 'l')
col = grDevices::adjustcolor(c('green','red'), 80/255)
rtsplot.y.highlight(col=col[1], highlight=c(50,100))	
rtsplot.y.highlight(col=col[2], highlight=c(0,50))	
	
abline(h = 50, col = 'gray20')
rtsplot.legend('RSI(20)', 'black', rsi)
Plot time series with second Y axis
Description
Detailed discussion for validity of dual Y axis at [Dual axes time series plots may be ok sometimes after all](http://freerangestats.info/blog/2016/08/18/dualaxes)
Usage
rtsplot2Y(y, las = 1, type = "l", col.axis = "red", ylim = NULL, log = "", ...)
Arguments
| y | 
 | 
| las | rotation of Y axis labels, defaults to 1, for more info see  | 
| type | plot type, defaults to 'l', for more info see  | 
| col.axis | axis color, defaults to 'red' | 
| ylim | range on Y values, defaults to NULL | 
| log | log scale x, y, xy axes, defaults to ” | 
| ... | additional parameters to the  | 
Value
nothing
Examples
# generate time series data
y = rtsplot.fake.stock.data(1000)
symbol = 'SPY'
y1 = rtsplot.fake.stock.data(1000, 100)
symbol = 'IBM'
	
 # two Y axis example
 # to plot second Y axis, free some space on left side, set LeftMargin=3
 layout(1)
 cols = c('black', 'red')
 rtsplot(y, type = 'l', LeftMargin=3, col=cols[1])
			
 rtsplot2Y(y1, type='l', las=1, col=cols[2], col.axis=cols[2])
 rtsplot.legend('SPY(rhs),IBM(lhs)', cols, list(y,y1))