# =============================================================================. # # -----------------------------------------------------------------------------. suppressPackageStartupMessages({ library(knitr) library(ggplot2) library(Barbouille) # library(animation) })
# =============================================================================. # Markdown links # -----------------------------------------------------------------------------. MarkdownLink <- function(x, txt = NULL, lnk = "") { if(is.null(txt)) txt <- x lnk <- paste0("[", txt, "](", lnk, x, ")") chk <- x == "" lnk[chk] <- txt[chk] lnk } # =============================================================================. # # -----------------------------------------------------------------------------. DemoSBS <- function(...) { SideBySide(..., label = "", axes = F) }
SIM <- list( basic = list( P = List2Dataframe( list( "rnorm", -15, 1, "rnorm", -15, 5, "rnorm", 0, 1, "rnorm", 0, 5, "rnorm", 15, 1, "rnorm", 15, 5, "runif", -30, -15, "runif", 15, 30 ), lbl = c("f", "a", "b") ), M = rbind( c(4, 1, 2, 1, 2, 1, 2), c(8, 1, 3, 4, 3, 4, 3), c(4, 1, 6, 5, 6, 5, 6), c(1, 1, 7, 7, 7, 7, 7), c(1, 1, 8, 8, 8, 8, 8) ) ), wavy = list( P = List2Dataframe( list( "rnorm", 0, 3, "rnorm", 15, 3, "rnorm", 0, 1, "rnorm", -15, 1, "rnorm", 15, 1, "runif", -30, -10, "runif", 10, 30 ), lbl = c("f", "a", "b") ), M = rbind( c(2, 0, 1, 1, 2, 1, 1), c(1, 0, 3, 4, 3, 4, 3), c(1, 0, 3, 5, 3, 5, 3), c(1, 0, 6, 6, 6, 6, 6), c(1, 0, 7, 7, 7, 7, 7) ) ), chip = list( P = List2Dataframe( list( "rnorm", 10, 1, "rnorm", 14, 4, "rnorm", 18, 7, "rnorm", 25, 10, "rnorm", 20, 5, "rnorm", 30, 5, "rnorm", 40, 3 ), lbl = c("f", "a", "b") ), M = rbind( c(1, 0.25, 1, 1, 1, 1, 1), c(2, 0.25, 4, 1, 2, 3, 4), c(1, 0.25, 7, 1, 5, 6, 7) ) ) ) SIM$basic$P$f <- sapply(as.character(SIM$basic$P$f), get) SIM$wavy$P$f <- sapply(as.character(SIM$wavy$P$f), get) SIM$chip$P$f <- sapply(as.character(SIM$chip$P$f), get)
# =============================================================================. # # -----------------------------------------------------------------------------. CFG <- new.env() CFG$debug <- TRUE CFG$paths <- list( parameters = "../inst/Parameters/" ) CFG$images <- list( build = F, path = "images/Parameters/", name = "img", counter = 0, resolution = 300, width = 4, height = 4.25, units = "in", par = list(pch = 20, mar = c(4.5, 4.5, 4.0, 2.0)) )
My collection of plotting and color mapping functions, home cooked with base R graphics, ash and colorspace.
\newpage
Here include a table of parameters with brief description and availability for SideBySideRepresentation/Distributions/Variations (BivariateRerepsentation?)
tbl <- read.delim( paste0(CFG$paths$parameters, "SideBySide.txt"), sep = "\t", header = T ) tbl$Parameter <- MarkdownLink(tbl$Parameter, lnk = "#") kable(tbl)
grp.clr <- c( rgb(0.4, 0.4, 1.0), rgb(0.0, 0.4, 0.8), rgb(0.8, 0.4, 0.0), rgb(1.0, 0.9, 0.0) ) # grp.clr <- list(d = grp.clr, v = "grey") grp.clr <- list(d = grp.clr, v = grp.clr) # grp.clr <- list()
\newpage
img <- "Data" # LittleThumb::MakeObj(obs, overload = TRUE, { # obs <- with(SIM$chip, SimulateData(p = P, m = M, n = 50000)) # }) data(obs) X <- obs$X grp <- obs$g tbl <- Matrix2Table(X, grp) rng <- c(0, 55)
ggplot(tbl, aes(x = X)) + geom_histogram(binwidth = 0.5) + theme_light() ggplot(tbl, aes(x = id, y = X)) + geom_boxplot(outlier.color = NA) + theme_light() ggplot(tbl, aes(x = id, y = X)) + geom_violin() + theme_light()
MkImg(ggplot(tbl, aes(x = X)) + geom_histogram(binwidth = 0.5) + theme_light()) MkImg(ggplot(tbl, aes(x = id, y = X)) + geom_boxplot(outlier.color = NA) + theme_light()) MkImg(ggplot(tbl, aes(x = id, y = X)) + geom_violin() + theme_light())
img <- "Functions"
# To visualize distributions and variations separately Distributions(X) Variations(X) # To visualize both distributions and variations SideBySide(X)
MkImg(Distributions(X, rng, main = "Distributions")) MkImg(Variations(X, rng, main = "Variations")) MkImg(SideBySide(X, rng, main = "SideBySide"))
# To visualize joint distributions ScatterMaps(X, rng, x = "A", y = c("B", "C", "D", "E"), f = "split", colors = "grey")
MkImg(ScatterMaps(X, rng, x = "A", y = "B", colors = "grey")) MkImg(ScatterMaps(X, rng, x = "A", y = "C", colors = "grey")) MkImg(ScatterMaps(X, rng, x = "A", y = "D", colors = "grey")) MkImg(ScatterMaps(X, rng, x = "A", y = "E", colors = "grey"))
img <- "ColorsPart1"
clr <- list( d = rgb(0, 0.5, 1), v = rgb(1, 0.5, 0), p = hsv(c(60, 90, 30) / 360), m = c("grey", rgb(0:3/3, 0, 3:0/3)) ) maps <- list( list(x = "A", y = "B"), list(x = "A", y = "C"), list(x = "A", y = "D"), list(x = "A", y = "E") )
SideBySide( X, rng, db = 25, colors = list(d = clr[["m"]]), grid = NA )
MkImg( SideBySide( X, rng, db = 25, colors = list(d = clr[["m"]]), gradient = "hcl.mono.light", scales = "absolute", grid = NA, main = "SideBySide\nscales = 'absolute'" ) ) MkImg( SideBySide( X, rng, db = 25, colors = list(d = clr[["m"]]), gradient = "hcl.mono.light", scales = "relative", grid = NA, main = "SideBySide\nscales = 'relative" ) ) MkImg( SideBySide( X, rng, db = 25, colors = list(d = clr[["m"]]), gradient = "hcl.mono.light", scales = "maximized", grid = NA, main = "SideBySide\nscales = 'maximized" ) )
ScatterMaps( X, rng, maps = maps, layers = "maps", colors = list(m = clr[["m"]][-1]) )
grd <- "hcl.mono.light" MkImg( ScatterMaps( X, rng, maps = maps, layers = "maps", colors = list(m = clr[["m"]][-1]), gradient = grd, scales = "relative", scoring = "glf", main = "ScatterMaps\nscoring = 'glf'" ) ) MkImg( ScatterMaps( X, rng, maps = maps, layers = "maps", colors = list(m = clr[["m"]][-1]), gradient = grd, scales = "relative", scoring = "quadra", main = "ScatterMaps\nscoring = 'quadratic'" ) ) MkImg( ScatterMaps( X, rng, maps = maps, layers = "maps", colors = list(m = clr[["m"]][-1]), gradient = grd, scales = "relative", scoring = "linear", main = "ScatterMaps\nscoring = 'linear'" ) )
img <- "ColorsPart2"
SideBySide( X, rng, db = 25, pops = grp, colors = list(p = clr[["p"]]) )
grd <- "hcl.duo.light" MkImg( SideBySide( X, rng, db = 25, pops = grp, colors = list(p = clr[["p"]]), gradient = grd, scales = "relative", scoring = "glf", main = "SideBySide\nscoring = 'glf'" ) ) MkImg( SideBySide( X, rng, db = 25, pops = grp, colors = list(p = clr[["p"]]), gradient = grd, scales = "relative", scoring = "quadra", main = "SideBySide\nscoring = 'quadratic'" ) ) MkImg( SideBySide( X, rng, db = 25, pops = grp, colors = list(p = clr[["p"]]), gradient = grd, scales = "relative", scoring = "linear", main = "SideBySide\nscoring = 'linear'" ) )
img <- "ColorsPart3"
Distributions( X, rng, pops = grp, proportions = 'static', ordering = 'static', colors = list(p = clr[["p"]]) )
grd <- "hcl.duo.light" MkImg( Distributions( X, rng, pops = grp, proportions = 'static', ordering = 'static', colors = list(p = clr[["p"]]), gradient = grd, scales = "relative", scoring = "glf", main = "SideBySide\nscoring = 'glf'" ) ) MkImg( Distributions( X, rng, pops = grp, proportions = 'static', ordering = 'static', colors = list(p = clr[["p"]]), gradient = grd, scales = "relative", scoring = "quadra", main = "SideBySide\nscoring = 'quadratic'" ) ) MkImg( Distributions( X, rng, pops = grp, proportions = 'static', ordering = 'static', colors = list(p = clr[["p"]]), gradient = grd, scales = "relative", scoring = "linear", main = "SideBySide\nscoring = 'linear'" ) )
img <- "ColorsPart4"
ScatterMaps( X, rng, pops = grp, x = "A", y = colnames(X)[-1], colors = list(p = clr[["p"]]) )
grd <- "hcl.duo.light" MkImg( ScatterMaps( X, rng, pops = grp, x = "A", y = colnames(X)[-1], colors = list(p = clr[["p"]]), gradient = grd, scales = "absolute", scoring = "glf", main = "ScatterMaps\nscales = 'absolute'" ) ) MkImg( ScatterMaps( X, rng, pops = grp, x = "A", y = colnames(X)[-1], colors = list(p = clr[["p"]]), gradient = grd, scales = "relative", scoring = "glf", main = "ScatterMaps\nscales = 'relative'" ) ) MkImg( ScatterMaps( X, rng, pops = grp, x = "A", y = colnames(X)[-1], colors = list(p = clr[["p"]]), gradient = grd, scales = "maximized", scoring = "glf", main = "ScatterMaps\nscales = 'maximized'" ) )
img <- "ColorsPart5"
obs <- with(SIM$basic, SimulateData(p = P, m = M, n = 50000)) X <- obs$X grp <- obs$g rng <- c(-30, 30)
SideBySide(X, colors = rgb(1, 1, 0)) SideBySide(X, colors = c(d = rgb(0, 0.5, 1))) SideBySide(X, colors = c(v = rgb(1, 0.5, 0))) SideBySide(X, colors = c(d = rgb(0, 0.5, 1), v = rgb(1, 0.5, 0)))
MkImg(DemoSBS(X, rng, colors = rgb(1, 1, 0))) MkImg(DemoSBS(X, rng, colors = c(d = rgb(0, 0.5, 1)))) MkImg(DemoSBS(X, rng, colors = c(v = rgb(1, 0.5, 0)))) MkImg(DemoSBS(X, rng, colors = c(d = rgb(0, 0.5, 1), v = rgb(1, 0.5, 0))))
img <- "Orientation" obs <- with(SIM$basic, SimulateData(p = P, m = M, n = 50000)) X <- obs$X grp <- obs$g rng <- c(-30, 30)
# Default value is layout = "horizontal" SideBySide(X) # Alternative layout values is "vertical" # Unambiguous abbreviations can be used SideBySide(X, layout = "v")
MkImg(SideBySide(X, rng, layout = "h", main = "layout = 'horizontal'\n(default)")) MkImg(SideBySide(X, rng, layout = "v", main = "layout = 'vertical'"))
\newpage
img <- "Axes" obs <- with(SIM$basic, SimulateData(p = P, m = M, n = 50000)) X <- obs$X grp <- obs$g rng <- c(-30, 30)
# Default value is rng = NULL SideBySide(X) SideBySide(X, rng = c(-25, 25))
MkImg(SideBySide(X, main = "rng = NULL\n(default)")) MkImg(SideBySide(X, rng = c(-25, 25), main = "rng = c(-25, 25)"))
if(CFG$debug) MkImg(SideBySide(X, layout = "v")) if(CFG$debug) MkImg(SideBySide(X, layout = "v", rng = c(-25, 25)))
# Default value is label = NULL SideBySide(X) SideBySide(X, label = "") SideBySide(X, label = "values")
MkImg(SideBySide(X, rng, main = "label = NULL\n(default)")) MkImg(SideBySide(X, rng, label = "", main = "label = ''")) MkImg(SideBySide(X, rng, label = "values", main = "label = 'values'")) if(CFG$debug) MkImg(SideBySide(X, rng, layout = "v")) if(CFG$debug) MkImg(SideBySide(X, rng, layout = "v", label = "")) if(CFG$debug) MkImg(SideBySide(X, rng, layout = "v", label = "values"))
# Default value is names = TRUE SideBySide(X) SideBySide(X, names = F)
MkImg(SideBySide(X, rng, main = "names = TRUE\n(default)")) MkImg(SideBySide(X, rng, names = F, main = "names = FALSE"))
if(CFG$debug) MkImg(SideBySide(X, rng, layout = "v")) if(CFG$debug) MkImg(SideBySide(X, rng, layout = "v", names = F))
# Default value is las = 1 SideBySide(X) SideBySide(X, las = 2)
MkImg(SideBySide(X, rng, main = "las = 1\n(default)")) MkImg(SideBySide(X, rng, las = 2, main = "las = 2"))
\newpage
img <- "Separators" obs <- with(SIM$basic, SimulateData(p = P, m = M, n = 50000)) X <- obs$X grp <- obs$g rng <- c(-30, 30)
# Default value is box = TRUE SideBySide(X) SideBySide(X, box = F) SideBySide(X, axes = F)
MkImg(SideBySide(X, names = F, label = "", grid = NA, rng, main = "box = axes = TRUE\n(default)")) MkImg(SideBySide(X, names = F, label = "", grid = NA, rng, box = F, main = "box = FALSE")) MkImg(SideBySide(X, names = F, label = "", grid = NA, rng, axes = F, main = "axes = FALSE"))
Line delimiters and blank spaces between columns of X are mutually exclusive.
# By default # grid = grey(0.5, alpha = 0.5) # spacing = 0 SideBySide(X) # grid = NA disables line delimiters SideBySide(X, grid = NA) # non zero spacing disables line delimiters SideBySide(X, spacing = 10)
MkImg(DemoSBS(X, rng, box = F, main = "by default")) MkImg(DemoSBS(X, rng, box = F, grid = NA, main = "grid = NA")) MkImg(DemoSBS(X, rng, box = F, spacing = 10, main = "spacing = 10"))
\newpage
img <- "Binning" obs <- with(SIM$basic, SimulateData(p = P, m = M, n = 50000)) X <- obs$X grp <- obs$g rng <- c(-30, 30)
# Default value is bins = 200 Distributions(X, bins = 150) Distributions(X, bins = 75)
MkImg(Distributions(X, rng, axes = F, label = "", bins = 150, main = "bins = 150")) MkImg(Distributions(X, rng, axes = F, label = "", bins = 75, main = "bins = 75"))
# Default value is bins = 200 Variations(X, bins = 150) Variations(X, bins = 75)
MkImg(Variations(X, rng, axes = F, label = "", bins = 150, main = "bins = 150")) MkImg(Variations(X, rng, axes = F, label = "", bins = 75, main = "bins = 75"))
# Default value is db = 50 Distributions(X) Distributions(X, db = 10) Distributions(X, db = 1)
MkImg(Distributions(X, rng, axes = F, label = "", main = "db = 50\n(default)")) MkImg(Distributions(X, rng, axes = F, label = "", db = 10, main = "db = 10")) MkImg(Distributions(X, rng, axes = F, label = "", db = 1, main = "db = 1"))
# Default value is vb = 50 Variations(X) Variations(X, vb = 10) Variations(X, vb = 1)
MkImg(Variations(X, rng, axes = F, label = "", main = "vb = 50\n(default)")) MkImg(Variations(X, rng, axes = F, label = "", vb = 10, main = "vb = 10")) MkImg(Variations(X, rng, axes = F, label = "", vb = 1, main = "vb = 1"))
# By default # db = 50 # vb = 50 SideBySide(X, vb = 0) # identical to Distributions(X) SideBySide(X, vb = 20) SideBySide(X) SideBySide(X, db = 20) SideBySide(X, db = 0) # identical to Variations(X)
clr <- c(d = rgb(0, 0.5, 1), v = rgb(1, 0.5, 0)) MkImg(DemoSBS(X, rng, vb = 0, main = "vb = 0\n(Distributions)", colors = clr)) MkImg(DemoSBS(X, rng, vb = 20, main = "vb = 20", colors = clr)) MkImg(DemoSBS(X, rng, main = "db = vb = 50\n(default)", colors = clr)) MkImg(DemoSBS(X, rng, db = 20, main = "db = 20", colors = clr)) MkImg(DemoSBS(X, rng, db = 0, main = "db = 0\n(Variations)", colors = clr))
\newpage
img <- "Quality" obs <- with(SIM$basic, SimulateData(p = P, m = M, n = 1100)) X <- obs$X grp <- obs$g rng <- c(-30, 30)
# Default value is sampling = 5E5 SideBySide(X, sampling = 5E3) SideBySide(X, sampling = 5E4)
MkImg(DemoSBS(X, rng, sampling = 5E3, main = "sampling = 5E3")) MkImg(DemoSBS(X, rng, sampling = 5E4, main = "sampling = 5E4")) MkImg(DemoSBS(X, rng, sampling = 5E5, main = "sampling = 5E5"))
img <- "Quality" obs <- with(SIM$basic, SimulateData(p = P, m = M, n = 10000)) X <- obs$X grp <- obs$g rng <- c(-30, 30)
# Default value is smoothing = c(5, 5) SideBySide(X) SideBySide(X, smoothing = 0) SideBySide(X, smoothing = c(15, 0)) SideBySide(X, smoothing = c(0, 15))
MkImg(DemoSBS(X, rng, main = "smoothing = 5\n(default)")) MkImg(DemoSBS(X, rng, smoothing = 0, main = "smoothing = 0")) MkImg(DemoSBS(X, rng, smoothing = c(15, 0), main = "smoothing = c(15, 0)")) MkImg(DemoSBS(X, rng, smoothing = c(0, 15), main = "smoothing = c(0, 15)"))
\newpage
Barbouille(label = "")
img <- "Casting" obs <- with(SIM$wavy, SimulateData(p = P, m = M, n = 50000)) X <- obs$X grp <- obs$g rng <- c(-30, 30)
# Default value is spray = "uniform" Distributions(X) # Alternative spray values are "cosine", "normal" and "triangle" # Unambiguous abbreviations can be used Distributions(X, spray = "cos")
MkImg(Distributions(X, rng, main = "spray = 'uniform'\n(default)")) MkImg(Distributions(X, rng, spray = "cos", main = "spray = 'cosine'"))
# Default value is spray = "uniform" Variations(X) # Alternative spray values are "cosine", "normal" and "triangle" # Unambiguous abbreviations can be used Variations(X, spray = "cos")
MkImg(Variations(X, rng, main = "spray = 'uniform'\n(default)")) MkImg(Variations(X, rng, spray = "cos", main = "spray = 'cosine'"))
# Default value is stencil = "linear" Variations(X) # Alternative stencil values are "cosine" and "sigmoid" # Unambiguous abbreviations can be used Variations(X, stencil = "cos") SideBySide(X, stencil = "lin", db = 20, colors = c(d = rgb(0, 0.5, 1))) SideBySide(X, stencil = "cos", db = 20, colors = c(d = rgb(0, 0.5, 1)))
MkImg(Variations(X, rng, main = "stencil = 'linear'\n(default)")) MkImg(Variations(X, rng, stencil = "cos", main = "stencil = 'cosine'")) if(CFG$debug) { MkImg(Variations(X, rng, stencil = "sig", main = "stencil = 'sigmoid'")) }
if(CFG$debug) { MkImg( SideBySide( X, rng, db = 20, colors = c(d = rgb(0, 0.5, 1)), stencil = "lin" ) ) } if(CFG$debug) { MkImg( SideBySide( X, rng, db = 20, colors = c(d = rgb(0, 0.5, 1)), stencil = "cos" ) ) }
img <- "Populations" obs <- with(SIM$wavy, SimulateData(p = P, m = M, n = 50000)) X <- obs$X grp <- obs$g clr <- c( rgb(1, 1, 0), rgb(1, 0.5, 0), rgb(0, 0.5, 1), "grey", "grey" ) clr <- list(p = clr)
SideBySide(X, rng, db = 20) SideBySide(X, rng, db = 20, pops = grp) SideBySide(X, rng, db = 20, pops = grp, colors = clr) ScatterMaps(X, x = "A", y = colnames(X)[-1], pops = grp, colors = "grey") ScatterMaps(X, x = "A", y = colnames(X)[-1], pops = grp) ScatterMaps(X, x = "A", y = colnames(X)[-1], pops = grp, colors = clr)
MkImg(SideBySide(X, rng, db = 20)) MkImg(SideBySide(X, rng, db = 20, pops = grp)) MkImg(SideBySide(X, rng, db = 20, pops = grp, colors = clr)) MkImg(ScatterMaps(X, x = "A", y = colnames(X)[-1], pops = grp, colors = "grey")) MkImg(ScatterMaps(X, x = "A", y = colnames(X)[-1], pops = grp)) MkImg(ScatterMaps(X, x = "A", y = colnames(X)[-1], pops = grp, colors = clr))
SideBySide(X[, c(1, 5, 2, 4, 3)], rng, db = 20, skip = c(1, 3)) SideBySide(X[, c(1, 5, 2, 4, 3)], rng, db = 20, skip = c(1, 3), pops = grp) SideBySide(X[, c(1, 5, 2, 4, 3)], rng, db = 20, skip = c(1, 3), pops = grp, colors = clr)
MkImg(SideBySide(X[, c(1, 5, 2, 4, 3)], rng, db = 20, skip = c(1, 3))) MkImg(SideBySide(X[, c(1, 5, 2, 4, 3)], rng, db = 20, skip = c(1, 3), pops = grp)) MkImg(SideBySide(X[, c(1, 5, 2, 4, 3)], rng, db = 20, skip = c(1, 3), pops = grp, colors = clr))
img <- "Debug"
# =============================================================================. # Verify the placement of labels and delimiters with or without spacing # -----------------------------------------------------------------------------. # Matrix of 40000 observations (rows) x 5 variables (columns) n <- c(1, 1) * 10000 X <- rbind( cbind(rnorm(n[1], 10, 4), rnorm(n[1], 10, 2), rnorm(n[1], 10, 4)), cbind(rnorm(n[2], -10, 2), rnorm(n[2], -10, 4), rnorm(n[2], -10, 2)) ) colnames(X) <- LETTERS[1:ncol(X)] # Subpopulations grp <- rep(1:length(n), n) spc <- 1 nbr <- 2 if(CFG$debug) MkImg(SideBySide(X, db = nbr, vb = 0, bins = nbr, smoothing = 0, spacing = spc)) if(CFG$debug) MkImg(SideBySide(X, db = 0, vb = nbr, bins = nbr, smoothing = 0, spacing = spc)) if(CFG$debug) MkImg(SideBySide(X, vb = nbr, db = nbr, bins = nbr, smoothing = 0, spacing = spc)) if(CFG$debug) MkImg(SideBySide(X, db = nbr, vb = 0, bins = nbr, smoothing = 0, grid = "red")) if(CFG$debug) MkImg(SideBySide(X, db = 0, vb = nbr, bins = nbr, smoothing = 0, grid = "red")) if(CFG$debug) MkImg(SideBySide(X, vb = nbr, db = nbr, bins = nbr, smoothing = 0, grid = "red")) if(CFG$debug) MkImg(SideBySide(X, db = nbr, vb = 0, bins = nbr, smoothing = 0, grid = "red", layout = "v")) if(CFG$debug) MkImg(SideBySide(X, db = 0, vb = nbr, bins = nbr, smoothing = 0, grid = "red", layout = "v")) if(CFG$debug) MkImg(SideBySide(X, vb = nbr, db = nbr, bins = nbr, smoothing = 0, grid = "red", layout = "v"))
# obs <- with(SIM$wavy, SimulateData(p = P, m = M, n = 1000)) # X <- obs$X # grp <- obs$g # rng <- c(-30, 30) # db <- 50 # vb <- 50 # nbr <- 1E5 # # f <- function() { # DemoSBS( # X, rng, db = db, vb = vb, sampling = nbr, stencil = s, # colors = c(d = rgb(0, 0.5, 1), v = rgb(1, 0.5, 0)), # box = F, grid = NA, names = F # ) # } # # saveGIF( # for(s in c("cosine")) { # "linear", # message(s, " | ", db, " | ", vb) # for(vb in 0:50) { f() } # message(s, " | ", db, " | ", vb) # for(db in 49:1) { f() } # message(s, " | ", db, " | ", vb) # for(db in 0:50) { f() } # message(s, " | ", db, " | ", vb) # for(vb in 49:1) { f() } # }, # movie.name = "BarbouilleMovie2.gif", # interval = 0.1, nmax = 250, # ani.width = 400, ani.height = 425 # )
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.