## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ----setup--------------------------------------------------------------------
suppressPackageStartupMessages(require(dplyr))
suppressPackageStartupMessages(require(data.table))
suppressPackageStartupMessages(require(stringr))
suppressPackageStartupMessages(require(FinanceGraphs))

## ----echo=FALSE---------------------------------------------------------------
options(datatable.print.keys=FALSE, datatable.print.class=FALSE)
knitr::opts_chunk$set(fig.width = 7)

## ----echo=FALSE---------------------------------------------------------------
mtcars=data.table(datasets::mtcars,keep.rownames=TRUE)
mtcars=mtcars[,id:= stringr::str_split_i(rn," ",-1)]

## -----------------------------------------------------------------------------
head(mtcars,2)
fg_scatplot(mtcars,"disp ~ hp + color:cyl + label:id","scatter",title="mtcars")

## -----------------------------------------------------------------------------
fg_scatplot(mtcars,"disp ~ hp + color:cyl + symbol:gear + size:am","scatter",title="mtcars")

## -----------------------------------------------------------------------------
set.seed(1); ndates<-400
samp_rw <- function() { 100*(1+cumsum(rnorm(ndates,sd=0.2/sqrt(260)))) }
dts <- seq(as.Date("2021-01-01"),as.Date("2021-01-01")+ndates-1)
dttest_A <- data.table(date=dts,ccat="A vs X",px_idx=samp_rw(),px_eq=samp_rw())
dttest_B <- copy(dttest_A)[,let(ccat="B vs X",px_eq=samp_rw())]
dttest <- rbind(dttest_A, dttest_B)

## -----------------------------------------------------------------------------
fg_scatplot(dttest,"px_eq ~ px_idx + color:ccat + doi:recent + point:label","scatter",
                datecuts=c(66,122),title="from recent")

## -----------------------------------------------------------------------------
dtrtn<- rbind(eqtyrtn[,.(date,r_eq=100*EEM,r_idx=100*QQQ,ticker="EEM")],
                    eqtyrtn[,.(date,r_eq=100*IBM,r_idx=100*QQQ,ticker="IBM")]) |>
                    narrowbydtstr("-1y::")
fg_scatplot(dtrtn,"r_eq ~ r_idx + color:ticker + xline:0 + yline:0","densitylm",
            tformula="y~0+x:(x>0)",title="piecewise linear")

## -----------------------------------------------------------------------------
toplot = eqtypx[data.table(consumer_sent),on=.(date),roll=T] |> tail(n=12)
fg_scatplot(toplot,"QQQ ~ price + point:value","path",title="QQQ vs Sent",axislabels="ConsSent;Stonks")

## -----------------------------------------------------------------------------
fg_scatplot(mtcars,"disp ~ hp + text:id","scatter",title="boundbox Example",
             boundboxtype="probidentify",boundbox=c(0.1,0.1))

## -----------------------------------------------------------------------------
fg_scatplot(dttest,"px_eq ~ px_idx + color:ccat ","scat",title="with decorations",
                    annotatecorners="NW;NE;SE;SW",
                    xdecoration="mktsad;mkthappy",ydecoration="eqsad;eqhappy")

## -----------------------------------------------------------------------------
require(ggplot2)
fg_scatplot(dttest,"px_eq ~ px_idx + point:value","scat",keepcols="ccat") + facet_wrap(ccat ~ .)

## -----------------------------------------------------------------------------
fg_get_aes("lines",n_max=3)

## -----------------------------------------------------------------------------
fg_print_aes_list("fg_scatplot") |> head(n=5)

## -----------------------------------------------------------------------------
head(fg_get_aes("altlines_6"),2)
fg_scatplot(dttest,"px_eq ~ px_idx + color:ccat,altlines_6 + point:label","scatter",title="from recent")

