| 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))