# =============================================================================.
#
# -----------------------------------------------------------------------------.
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

SideBySide and its derived functions

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

Data

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

Functions

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

Colors - part 1

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

Colors - part 2

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

Colors - part 3

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

Colors - part 4

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

Colors - part 5

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

Orientation

img <- "Orientation"
obs <- with(SIM$basic, SimulateData(p = P, m = M, n = 50000))
X   <- obs$X
grp <- obs$g
rng <- c(-30, 30)

layout

# 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

Axes

img <- "Axes"
obs <- with(SIM$basic, SimulateData(p = P, m = M, n = 50000))
X   <- obs$X
grp <- obs$g
rng <- c(-30, 30)

rng

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

label

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

names

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

las

# 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

Separators

img <- "Separators"
obs <- with(SIM$basic, SimulateData(p = P, m = M, n = 50000))
X   <- obs$X
grp <- obs$g
rng <- c(-30, 30)

box & axes

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

grid & spacing

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

Binning

img <- "Binning"
obs <- with(SIM$basic, SimulateData(p = P, m = M, n = 50000))
X   <- obs$X
grp <- obs$g
rng <- c(-30, 30)

bins

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

db & vb

# 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

Quality

sampling

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

smoothing

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

Shaping

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)

spray

# 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'"))

stencil

# 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"
    )
  )
}

Populations

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

Debug

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

Movie

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


benja0x40/Barbouille documentation built on March 26, 2023, 11:38 p.m.