
R Under development (unstable) (2022-03-19 r81942) -- "Unsuffered Consequences"
Copyright (C) 2022 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

  Natural language support but running in an English locale

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> pkgname <- "grDevices"
> source(file.path(R.home("share"), "R", "examples-header.R"))
> options(warn = 1)
> library('grDevices')
> 
> base::assign(".oldSearch", base::search(), pos = 'CheckExEnv')
> base::assign(".old_wd", base::getwd(), pos = 'CheckExEnv')
> cleanEx()
> nameEx("Devices")
> ### * Devices
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: Devices
> ### Title: List of Graphical Devices
> ### Aliases: Devices device
> ### Keywords: device
> 
> ### ** Examples
> ## Not run: 
> ##D ## open the default screen device on this platform if no device is
> ##D ## open
> ##D if(dev.cur() == 1) dev.new()
> ## End(Not run)
> 
> 
> cleanEx()
> nameEx("Hershey")
> ### * Hershey
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: Hershey
> ### Title: Hershey Vector Fonts in R
> ### Aliases: Hershey
> ### Keywords: aplot
> 
> ### ** Examples
> 
> Hershey
$typeface
[1] "serif"             "sans serif"        "script"           
[4] "gothic english"    "gothic german"     "gothic italian"   
[7] "serif symbol"      "sans serif symbol"

$fontindex
[1] "plain"            "italic"           "bold"             "bold italic"     
[5] "cyrillic"         "oblique cyrillic" "EUC"             

$allowed
      [,1] [,2]
 [1,]    1    1
 [2,]    1    2
 [3,]    1    3
 [4,]    1    4
 [5,]    1    5
 [6,]    1    6
 [7,]    1    7
 [8,]    2    1
 [9,]    2    2
[10,]    2    3
[11,]    2    4
[12,]    3    1
[13,]    3    2
[14,]    3    3
[15,]    4    1
[16,]    5    1
[17,]    6    1
[18,]    7    1
[19,]    7    2
[20,]    7    3
[21,]    7    4
[22,]    8    1
[23,]    8    2

> 
> ## for tables of examples, see demo(Hershey)
> 
> 
> 
> cleanEx()
> nameEx("Japanese")
> ### * Japanese
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: Japanese
> ### Title: Japanese characters in R
> ### Aliases: Japanese
> ### Keywords: aplot
> 
> ### ** Examples
> 
> require(graphics)
> 
> plot(1:9, type = "n", axes = FALSE, frame.plot = TRUE, ylab = "",
+      main = "example(Japanese)", xlab = "using Hershey fonts")
> par(cex = 3)
> Vf <- c("serif", "plain")
> text(4, 2, "\\#J244b\\#J245b\\#J2473", vfont = Vf)
> text(4, 4, "\\#J2538\\#J2563\\#J2551\\#J2573", vfont = Vf)
> text(4, 6, "\\#J467c\\#J4b5c", vfont = Vf)
> text(4, 8, "Japan", vfont = Vf)
> par(cex = 1)
> text(8, 2, "Hiragana")
> text(8, 4, "Katakana")
> text(8, 6, "Kanji")
> text(8, 8, "English")
> 
> 
> 
> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
> cleanEx()
> nameEx("Type1Font")
> ### * Type1Font
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: Type1Font
> ### Title: Type 1 and CID Fonts
> ### Aliases: Type1Font CIDFont
> ### Keywords: device
> 
> ### ** Examples
> 
> ## This duplicates "ComputerModernItalic".
> CMitalic <- Type1Font("ComputerModern2",
+                       c("CM_regular_10.afm", "CM_boldx_10.afm",
+                         "cmti10.afm", "cmbxti10.afm",
+                         "CM_symbol_10.afm"),
+                       encoding = "TeXtext.enc")
> 
> ## Not run: 
> ##D ## This could be used by
> ##D postscript(family = CMitalic)
> ##D ## or
> ##D postscriptFonts(CMitalic = CMitalic)  # once in a session
> ##D postscript(family = "CMitalic", encoding = "TeXtext.enc")
> ## End(Not run)
> 
> 
> cleanEx()
> nameEx("adjustcolor")
> ### * adjustcolor
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: adjustcolor
> ### Title: Adjust Colors in One or More Directions Conveniently.
> ### Aliases: adjustcolor
> 
> ### ** Examples
> 
> ## Illustrative examples :
> opal <- palette("default")
> stopifnot(identical(adjustcolor(1:8,       0.75),
+                     adjustcolor(palette(), 0.75)))
> cbind(palette(), adjustcolor(1:8, 0.75))
     [,1]      [,2]       
[1,] "black"   "#000000BF"
[2,] "#DF536B" "#DF536BBF"
[3,] "#61D04F" "#61D04FBF"
[4,] "#2297E6" "#2297E6BF"
[5,] "#28E2E5" "#28E2E5BF"
[6,] "#CD0BBC" "#CD0BBCBF"
[7,] "#F5C710" "#F5C710BF"
[8,] "gray62"  "#9E9E9EBF"
> 
> ##  alpha = 1/2 * previous alpha --> opaque colors
> x <- palette(adjustcolor(palette(), 0.5))
> 
> sines <- outer(1:20, 1:4, function(x, y) sin(x / 20 * pi * y))
> matplot(sines, type = "b", pch = 21:23, col = 2:5, bg = 2:5,
+         main = "Using an 'opaque ('translucent') color palette")
> 
> x. <- adjustcolor(x, offset = c(0.5, 0.5, 0.5, 0), # <- "more white"
+                   transform = diag(c(.7, .7, .7, 0.6)))
> cbind(x, x.)
     x         x.         
[1,] "black"   "#80808099"
[2,] "#DF536B" "#FFBACA99"
[3,] "#61D04F" "#C3FFB799"
[4,] "#2297E6" "#97E9FF99"
[5,] "#28E2E5" "#9BFFFF99"
[6,] "#CD0BBC" "#FF87FF99"
[7,] "#F5C710" "#FFFF8B99"
[8,] "gray62"  "#EEEEEE99"
> op <- par(bg = adjustcolor("goldenrod", offset = -rep(.4, 4)), xpd = NA)
> plot(0:9, 0:9, type = "n", axes = FALSE, xlab = "", ylab = "",
+      main = "adjustcolor() -> translucent")
> text(1:8, labels = paste0(x,"++"), col = x., cex = 8)
> par(op)
> 
> ## and
> 
> (M <- cbind( rbind( matrix(1/3, 3, 3), 0), c(0, 0, 0, 1)))
          [,1]      [,2]      [,3] [,4]
[1,] 0.3333333 0.3333333 0.3333333    0
[2,] 0.3333333 0.3333333 0.3333333    0
[3,] 0.3333333 0.3333333 0.3333333    0
[4,] 0.0000000 0.0000000 0.0000000    1
> adjustcolor(x, transform = M)
[1] "#000000FF" "#8A8A8AFF" "#808080FF" "#8A8A8AFF" "#A5A5A5FF" "#878787FF"
[7] "#999999FF" "#9E9E9EFF"
> 
> ## revert to previous palette: active
> palette(opal)
> 
> 
> 
> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
> cleanEx()
> nameEx("as.raster")
> ### * as.raster
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: as.raster
> ### Title: Create a Raster Object
> ### Aliases: is.raster as.raster as.raster.logical as.raster.numeric
> ###   as.raster.raw as.raster.character as.raster.matrix as.raster.array
> ### Keywords: dplot
> 
> ### ** Examples
> 
> # A red gradient
> as.raster(matrix(hcl(0, 80, seq(50, 80, 10)),
+                  nrow = 4, ncol = 5))
     [,1]      [,2]      [,3]      [,4]      [,5]     
[1,] "#C54E6D" "#C54E6D" "#C54E6D" "#C54E6D" "#C54E6D"
[2,] "#E16A86" "#E16A86" "#E16A86" "#E16A86" "#E16A86"
[3,] "#FE86A1" "#FE86A1" "#FE86A1" "#FE86A1" "#FE86A1"
[4,] "#FFA2BC" "#FFA2BC" "#FFA2BC" "#FFA2BC" "#FFA2BC"
> 
> # Vectors are 1-column matrices ...
> #   character vectors are color names ...
> as.raster(hcl(0, 80, seq(50, 80, 10)))
     [,1]     
[1,] "#C54E6D"
[2,] "#E16A86"
[3,] "#FE86A1"
[4,] "#FFA2BC"
> #   numeric vectors are greyscale ...
> as.raster(1:5, max = 5)
     [,1]     
[1,] "#333333"
[2,] "#666666"
[3,] "#999999"
[4,] "#CCCCCC"
[5,] "#FFFFFF"
> #   logical vectors are black and white ...
> as.raster(1:10 %% 2 == 0)
      [,1]     
 [1,] "#000000"
 [2,] "#FFFFFF"
 [3,] "#000000"
 [4,] "#FFFFFF"
 [5,] "#000000"
 [6,] "#FFFFFF"
 [7,] "#000000"
 [8,] "#FFFFFF"
 [9,] "#000000"
[10,] "#FFFFFF"
> 
> # ... unless nrow/ncol are supplied ...
> as.raster(1:10 %% 2 == 0, nrow = 1)
     [,1]      [,2]      [,3]      [,4]      [,5]      [,6]      [,7]     
[1,] "#000000" "#FFFFFF" "#000000" "#FFFFFF" "#000000" "#FFFFFF" "#000000"
     [,8]      [,9]      [,10]    
[1,] "#FFFFFF" "#000000" "#FFFFFF"
> 
> # Matrix can also be logical or numeric (or raw) ...
> as.raster(matrix(c(TRUE, FALSE), nrow = 3, ncol = 2))
     [,1]      [,2]     
[1,] "#FFFFFF" "#000000"
[2,] "#000000" "#FFFFFF"
[3,] "#FFFFFF" "#000000"
> as.raster(matrix(1:3/4, nrow = 3, ncol = 4))
     [,1]      [,2]      [,3]      [,4]     
[1,] "#404040" "#404040" "#404040" "#404040"
[2,] "#808080" "#808080" "#808080" "#808080"
[3,] "#BFBFBF" "#BFBFBF" "#BFBFBF" "#BFBFBF"
> 
> # An array can be 3-plane numeric (R, G, B planes) ...
> as.raster(array(c(0:1, rep(0.5, 4)), c(2, 1, 3)))
     [,1]     
[1,] "#008080"
[2,] "#FF8080"
> 
> # ... or 4-plane numeric (R, G, B, A planes)
> as.raster(array(c(0:1, rep(0.5, 6)), c(2, 1, 4)))
     [,1]       
[1,] "#00808080"
[2,] "#FF808080"
> 
> # subsetting
> r <- as.raster(matrix(colors()[1:100], ncol = 10))
> r[, 2]
      [,1]         
 [1,] "aquamarine3"
 [2,] "aquamarine4"
 [3,] "azure"      
 [4,] "azure1"     
 [5,] "azure2"     
 [6,] "azure3"     
 [7,] "azure4"     
 [8,] "beige"      
 [9,] "bisque"     
[10,] "bisque1"    
> r[2:4, 2:5]
     [,1]          [,2]      [,3]     [,4]        
[1,] "aquamarine4" "bisque3" "brown"  "cadetblue" 
[2,] "azure"       "bisque4" "brown1" "cadetblue1"
[3,] "azure1"      "black"   "brown2" "cadetblue2"
> 
> # assigning to subset
> r[2:4, 2:5] <- "white"
> 
> # comparison
> r == "white"
       [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9] [,10]
 [1,]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [2,] FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
 [3,] FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
 [4,] FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
 [5,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [6,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [7,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [8,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [9,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[10,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
> 
> ## Don't show: 
> stopifnot(r[] == r,
+           identical(r[3:5], colors()[3:5]))
> r[2:4] <- "black"
> stopifnot(identical(r[1:4, 1], as.raster(c("white", rep("black", 3)))))
> ## End(Don't show)
> 
> 
> 
> cleanEx()
> nameEx("axisTicks")
> ### * axisTicks
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: axisTicks
> ### Title: Compute Pretty Axis Tick Scales
> ### Aliases: axisTicks .axisPars
> ### Keywords: dplot
> 
> ### ** Examples
> 
> ##--- Demonstrating correspondence between graphics'
> ##--- axis() and the graphics-engine agnostic  axisTicks() :
> 
> require("graphics")
> plot(10*(0:10)); (pu <- par("usr"))
[1]   0.6  11.4  -4.0 104.0
> aX <- function(side, at, ...)
+     axis(side, at = at, labels = FALSE, lwd.ticks = 2, col.ticks = 2,
+          tck = 0.05, ...)
> aX(1, print(xa <- axisTicks(pu[1:2], log = FALSE)))  # x axis
[1]  2  4  6  8 10
> aX(2, print(ya <- axisTicks(pu[3:4], log = FALSE)))  # y axis
[1]   0  20  40  60  80 100
> 
> axisTicks(pu[3:4], log = FALSE, nint = 10)
 [1]   0  10  20  30  40  50  60  70  80  90 100
> 
> plot(10*(0:10), log = "y"); (pu <- par("usr"))
Warning in xy.coords(x, y, xlabel, ylabel, log) :
  1 y value <= 0 omitted from logarithmic plot
[1]  0.60 11.40  0.96  2.04
> aX(2, print(ya <- axisTicks(pu[3:4], log = TRUE)))  # y axis
[1]  10  20  50 100
> 
> plot(2^(0:9), log = "y"); (pu <- par("usr"))
[1]  0.6400000 10.3600000 -0.1083708  2.8176408
> aX(2, print(ya <- axisTicks(pu[3:4], log = TRUE)))  # y axis
[1]   1   2   5  10  20  50 100 200 500
> 
> 
> 
> 
> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
> cleanEx()
> nameEx("boxplot.stats")
> ### * boxplot.stats
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: boxplot.stats
> ### Title: Box Plot Statistics
> ### Aliases: boxplot.stats
> ### Keywords: dplot
> 
> ### ** Examples
> 
> require(stats)
> x <- c(1:100, 1000)
> (b1 <- boxplot.stats(x))
$stats
[1]   1  26  51  76 100

$n
[1] 101

$conf
[1] 43.13921 58.86079

$out
[1] 1000

> (b2 <- boxplot.stats(x, do.conf = FALSE, do.out = FALSE))
$stats
[1]   1  26  51  76 100

$n
[1] 101

$conf
NULL

$out
numeric(0)

> stopifnot(b1 $ stats == b2 $ stats) # do.out = FALSE is still robust
> boxplot.stats(x, coef = 3, do.conf = FALSE)
$stats
[1]   1  26  51  76 100

$n
[1] 101

$conf
NULL

$out
[1] 1000

> ## no outlier treatment:
> boxplot.stats(x, coef = 0)
$stats
[1]    1   26   51   76 1000

$n
[1] 101

$conf
[1] 43.13921 58.86079

$out
numeric(0)

> 
> boxplot.stats(c(x, NA)) # slight change : n is 101
$stats
[1]   1  26  51  76 100

$n
[1] 101

$conf
[1] 43.13921 58.86079

$out
[1] 1000

> (r <- boxplot.stats(c(x, -1:1/0)))
$stats
[1]   1.0  25.5  51.0  76.5 100.0

$n
[1] 103

$conf
[1] 43.06022 58.93978

$out
[1] 1000 -Inf  Inf

> stopifnot(r$out == c(1000, -Inf, Inf))
> 
> ## Don't show: 
>  ## Difference between quartiles and hinges :
>  nn <- 1:17 ;  n4 <- nn %% 4
>  hin <- sapply(sapply(nn, seq), function(x) boxplot.stats(x)$stats[c(2,4)])
>  q13 <- sapply(sapply(nn, seq), quantile, probs = c(1,3)/4, names = FALSE)
>  m <- t(rbind(q13,hin))[, c(1,3,2,4)]
>  dimnames(m) <- list(paste(nn), c("q1","lH", "q3","uH"))
>  stopifnot(m[n4 == 1, 1:2] == (nn[n4 == 1] + 3)/4,   # quart. = hinge
+            m[n4 == 1, 3:4] == (3*nn[n4 == 1] + 1)/4,
+            m[,"lH"] == ( (nn+3) %/% 2) / 2,
+            m[,"uH"] == ((3*nn+2)%/% 2) / 2)
>  cm <- noquote(format(m))
>  cm[m[,2] == m[,1], 2] <- " = "
>  cm[m[,4] == m[,3], 4] <- " = "
>  cm
   q1    lH    q3    uH   
1   1.00  =     1.00  =   
2   1.25  1.00  1.75  2.00
3   1.50  =     2.50  =   
4   1.75  1.50  3.25  3.50
5   2.00  =     4.00  =   
6   2.25  2.00  4.75  5.00
7   2.50  =     5.50  =   
8   2.75  2.50  6.25  6.50
9   3.00  =     7.00  =   
10  3.25  3.00  7.75  8.00
11  3.50  =     8.50  =   
12  3.75  3.50  9.25  9.50
13  4.00  =    10.00  =   
14  4.25  4.00 10.75 11.00
15  4.50  =    11.50  =   
16  4.75  4.50 12.25 12.50
17  5.00  =    13.00  =   
> ## End(Don't show)
> 
> 
> 
> 
> cleanEx()
> nameEx("cairoSymbolFont")
> ### * cairoSymbolFont
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: cairoSymbolFont
> ### Title: Specify a Symbol Font
> ### Aliases: cairoSymbolFont
> ### Keywords: device
> 
> ### ** Examples
> 
> ## Not run: 
> ##D ## If a font uses PUA, we can just specify the font name ...
> ##D cairo_pdf(symbolfamily="OpenSymbol")
> ##D dev.off()
> ##D ## ... or equivalently ...
> ##D cairo_pdf(symbolfamily=cairoSymbolFont("OpenSymbol"))
> ##D dev.off()
> ##D 
> ##D ## If a font does not use PUA, we must indicate that ...
> ##D cairo_pdf(symbolfamily=cairoSymbolFont("Nimbus Sans", usePUA=FALSE))
> ##D dev.off()
> ## End(Not run)
> 
> 
> 
> cleanEx()
> nameEx("check.options")
> ### * check.options
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: check.options
> ### Title: Set Options with Consistency Checks
> ### Aliases: check.options
> ### Keywords: utilities programming
> 
> ### ** Examples
> 
> (L1 <- list(a = 1:3, b = pi, ch = "CH"))
$a
[1] 1 2 3

$b
[1] 3.141593

$ch
[1] "CH"

> check.options(list(a = 0:2), name.opt = "L1")
$a
[1] 0 1 2

$b
[1] 3.141593

$ch
[1] "CH"

> check.options(NULL, reset = TRUE, name.opt = "L1")
$a
[1] 1 2 3

$b
[1] 3.141593

$ch
[1] "CH"

> 
> 
> 
> cleanEx()
> nameEx("chull")
> ### * chull
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: chull
> ### Title: Compute Convex Hull of a Set of Points
> ### Aliases: chull
> ### Keywords: graphs
> 
> ### ** Examples
> 
> X <- matrix(stats::rnorm(2000), ncol = 2)
> chull(X)
 [1]  61 442 165 899 697 446 975 656 232 557 938 295 495
> ## Not run: 
> ##D   # Example usage from graphics package
> ##D   plot(X, cex = 0.5)
> ##D   hpts <- chull(X)
> ##D   hpts <- c(hpts, hpts[1])
> ##D   lines(X[hpts, ])
> ## End(Not run)
> 
> 
> 
> cleanEx()
> nameEx("cm")
> ### * cm
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: cm
> ### Title: Unit Transformation
> ### Aliases: cm
> ### Keywords: dplot
> 
> ### ** Examples
> 
> cm(1)  # = 2.54
[1] 2.54
> 
> ## Translate *from* cm *to* inches:
> 
> 10 / cm(1) # -> 10cm  are 3.937 inches
[1] 3.937008
> 
> 
> 
> cleanEx()
> nameEx("col2rgb")
> ### * col2rgb
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: col2rgb
> ### Title: Color to RGB Conversion
> ### Aliases: col2rgb
> ### Keywords: color dplot
> 
> ### ** Examples
> 
> col2rgb("peachpuff")
      [,1]
red    255
green  218
blue   185
> col2rgb(c(blu = "royalblue", reddish = "tomato"))  # note: colnames
      blu reddish
red    65     255
green 105      99
blue  225      71
> 
> col2rgb(1:8)  # the ones from the palette() (if the default)
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
red      0  223   97   34   40  205  245  158
green    0   83  208  151  226   11  199  158
blue     0  107   79  230  229  188   16  158
> 
> col2rgb(paste0("gold", 1:4))
      [,1] [,2] [,3] [,4]
red    255  238  205  139
green  215  201  173  117
blue     0    0    0    0
> 
> col2rgb("#08a0ff")
      [,1]
red      8
green  160
blue   255
> ## all three kinds of color specifications:
> col2rgb(c(red = "red", hex = "#abcdef"))
      red hex
red   255 171
green   0 205
blue    0 239
> col2rgb(c(palette = 1:3))
      palette1 palette2 palette3
red          0      223       97
green        0       83      208
blue         0      107       79
> 
> ##-- NON-INTRODUCTORY examples --
> 
> grC <- col2rgb(paste0("gray", 0:100))
> table(print(diff(grC["red",])))  # '2' or '3': almost equidistant
  [1] 3 2 3 2 3 2 3 2 3 3 2 3 2 3 2 3 2 3 2 3 3 2 3 2 3 2 3 2 3 3 2 3 2 3 2 3 2
 [38] 3 2 3 3 2 3 2 3 2 3 2 3 2 3 3 2 3 2 3 2 3 2 3 3 2 3 2 3 2 3 2 3 3 2 3 2 3
 [75] 2 3 2 3 2 3 3 2 3 2 3 2 3 2 3 2 3 3 2 3 2 3 2 3 2 3

 2  3 
45 55 
> ## The 'named' grays are in between {"slate gray" is not gray, strictly}
> col2rgb(c(g66 = "gray66", darkg =  "dark gray", g67 = "gray67",
+           g74 = "gray74", gray  =       "gray", g75 = "gray75",
+           g82 = "gray82", light = "light gray", g83 = "gray83"))
      g66 darkg g67 g74 gray g75 g82 light g83
red   168   169 171 189  190 191 209   211 212
green 168   169 171 189  190 191 209   211 212
blue  168   169 171 189  190 191 209   211 212
> 
> crgb <- col2rgb(cc <- colors())
> colnames(crgb) <- cc
> t(crgb)  # The whole table
                     red green blue
white                255   255  255
aliceblue            240   248  255
antiquewhite         250   235  215
antiquewhite1        255   239  219
antiquewhite2        238   223  204
antiquewhite3        205   192  176
antiquewhite4        139   131  120
aquamarine           127   255  212
aquamarine1          127   255  212
aquamarine2          118   238  198
aquamarine3          102   205  170
aquamarine4           69   139  116
azure                240   255  255
azure1               240   255  255
azure2               224   238  238
azure3               193   205  205
azure4               131   139  139
beige                245   245  220
bisque               255   228  196
bisque1              255   228  196
bisque2              238   213  183
bisque3              205   183  158
bisque4              139   125  107
black                  0     0    0
blanchedalmond       255   235  205
blue                   0     0  255
blue1                  0     0  255
blue2                  0     0  238
blue3                  0     0  205
blue4                  0     0  139
blueviolet           138    43  226
brown                165    42   42
brown1               255    64   64
brown2               238    59   59
brown3               205    51   51
brown4               139    35   35
burlywood            222   184  135
burlywood1           255   211  155
burlywood2           238   197  145
burlywood3           205   170  125
burlywood4           139   115   85
cadetblue             95   158  160
cadetblue1           152   245  255
cadetblue2           142   229  238
cadetblue3           122   197  205
cadetblue4            83   134  139
chartreuse           127   255    0
chartreuse1          127   255    0
chartreuse2          118   238    0
chartreuse3          102   205    0
chartreuse4           69   139    0
chocolate            210   105   30
chocolate1           255   127   36
chocolate2           238   118   33
chocolate3           205   102   29
chocolate4           139    69   19
coral                255   127   80
coral1               255   114   86
coral2               238   106   80
coral3               205    91   69
coral4               139    62   47
cornflowerblue       100   149  237
cornsilk             255   248  220
cornsilk1            255   248  220
cornsilk2            238   232  205
cornsilk3            205   200  177
cornsilk4            139   136  120
cyan                   0   255  255
cyan1                  0   255  255
cyan2                  0   238  238
cyan3                  0   205  205
cyan4                  0   139  139
darkblue               0     0  139
darkcyan               0   139  139
darkgoldenrod        184   134   11
darkgoldenrod1       255   185   15
darkgoldenrod2       238   173   14
darkgoldenrod3       205   149   12
darkgoldenrod4       139   101    8
darkgray             169   169  169
darkgreen              0   100    0
darkgrey             169   169  169
darkkhaki            189   183  107
darkmagenta          139     0  139
darkolivegreen        85   107   47
darkolivegreen1      202   255  112
darkolivegreen2      188   238  104
darkolivegreen3      162   205   90
darkolivegreen4      110   139   61
darkorange           255   140    0
darkorange1          255   127    0
darkorange2          238   118    0
darkorange3          205   102    0
darkorange4          139    69    0
darkorchid           153    50  204
darkorchid1          191    62  255
darkorchid2          178    58  238
darkorchid3          154    50  205
darkorchid4          104    34  139
darkred              139     0    0
darksalmon           233   150  122
darkseagreen         143   188  143
darkseagreen1        193   255  193
darkseagreen2        180   238  180
darkseagreen3        155   205  155
darkseagreen4        105   139  105
darkslateblue         72    61  139
darkslategray         47    79   79
darkslategray1       151   255  255
darkslategray2       141   238  238
darkslategray3       121   205  205
darkslategray4        82   139  139
darkslategrey         47    79   79
darkturquoise          0   206  209
darkviolet           148     0  211
deeppink             255    20  147
deeppink1            255    20  147
deeppink2            238    18  137
deeppink3            205    16  118
deeppink4            139    10   80
deepskyblue            0   191  255
deepskyblue1           0   191  255
deepskyblue2           0   178  238
deepskyblue3           0   154  205
deepskyblue4           0   104  139
dimgray              105   105  105
dimgrey              105   105  105
dodgerblue            30   144  255
dodgerblue1           30   144  255
dodgerblue2           28   134  238
dodgerblue3           24   116  205
dodgerblue4           16    78  139
firebrick            178    34   34
firebrick1           255    48   48
firebrick2           238    44   44
firebrick3           205    38   38
firebrick4           139    26   26
floralwhite          255   250  240
forestgreen           34   139   34
gainsboro            220   220  220
ghostwhite           248   248  255
gold                 255   215    0
gold1                255   215    0
gold2                238   201    0
gold3                205   173    0
gold4                139   117    0
goldenrod            218   165   32
goldenrod1           255   193   37
goldenrod2           238   180   34
goldenrod3           205   155   29
goldenrod4           139   105   20
gray                 190   190  190
gray0                  0     0    0
gray1                  3     3    3
gray2                  5     5    5
gray3                  8     8    8
gray4                 10    10   10
gray5                 13    13   13
gray6                 15    15   15
gray7                 18    18   18
gray8                 20    20   20
gray9                 23    23   23
gray10                26    26   26
gray11                28    28   28
gray12                31    31   31
gray13                33    33   33
gray14                36    36   36
gray15                38    38   38
gray16                41    41   41
gray17                43    43   43
gray18                46    46   46
gray19                48    48   48
gray20                51    51   51
gray21                54    54   54
gray22                56    56   56
gray23                59    59   59
gray24                61    61   61
gray25                64    64   64
gray26                66    66   66
gray27                69    69   69
gray28                71    71   71
gray29                74    74   74
gray30                77    77   77
gray31                79    79   79
gray32                82    82   82
gray33                84    84   84
gray34                87    87   87
gray35                89    89   89
gray36                92    92   92
gray37                94    94   94
gray38                97    97   97
gray39                99    99   99
gray40               102   102  102
gray41               105   105  105
gray42               107   107  107
gray43               110   110  110
gray44               112   112  112
gray45               115   115  115
gray46               117   117  117
gray47               120   120  120
gray48               122   122  122
gray49               125   125  125
gray50               127   127  127
gray51               130   130  130
gray52               133   133  133
gray53               135   135  135
gray54               138   138  138
gray55               140   140  140
gray56               143   143  143
gray57               145   145  145
gray58               148   148  148
gray59               150   150  150
gray60               153   153  153
gray61               156   156  156
gray62               158   158  158
gray63               161   161  161
gray64               163   163  163
gray65               166   166  166
gray66               168   168  168
gray67               171   171  171
gray68               173   173  173
gray69               176   176  176
gray70               179   179  179
gray71               181   181  181
gray72               184   184  184
gray73               186   186  186
gray74               189   189  189
gray75               191   191  191
gray76               194   194  194
gray77               196   196  196
gray78               199   199  199
gray79               201   201  201
gray80               204   204  204
gray81               207   207  207
gray82               209   209  209
gray83               212   212  212
gray84               214   214  214
gray85               217   217  217
gray86               219   219  219
gray87               222   222  222
gray88               224   224  224
gray89               227   227  227
gray90               229   229  229
gray91               232   232  232
gray92               235   235  235
gray93               237   237  237
gray94               240   240  240
gray95               242   242  242
gray96               245   245  245
gray97               247   247  247
gray98               250   250  250
gray99               252   252  252
gray100              255   255  255
green                  0   255    0
green1                 0   255    0
green2                 0   238    0
green3                 0   205    0
green4                 0   139    0
greenyellow          173   255   47
grey                 190   190  190
grey0                  0     0    0
grey1                  3     3    3
grey2                  5     5    5
grey3                  8     8    8
grey4                 10    10   10
grey5                 13    13   13
grey6                 15    15   15
grey7                 18    18   18
grey8                 20    20   20
grey9                 23    23   23
grey10                26    26   26
grey11                28    28   28
grey12                31    31   31
grey13                33    33   33
grey14                36    36   36
grey15                38    38   38
grey16                41    41   41
grey17                43    43   43
grey18                46    46   46
grey19                48    48   48
grey20                51    51   51
grey21                54    54   54
grey22                56    56   56
grey23                59    59   59
grey24                61    61   61
grey25                64    64   64
grey26                66    66   66
grey27                69    69   69
grey28                71    71   71
grey29                74    74   74
grey30                77    77   77
grey31                79    79   79
grey32                82    82   82
grey33                84    84   84
grey34                87    87   87
grey35                89    89   89
grey36                92    92   92
grey37                94    94   94
grey38                97    97   97
grey39                99    99   99
grey40               102   102  102
grey41               105   105  105
grey42               107   107  107
grey43               110   110  110
grey44               112   112  112
grey45               115   115  115
grey46               117   117  117
grey47               120   120  120
grey48               122   122  122
grey49               125   125  125
grey50               127   127  127
grey51               130   130  130
grey52               133   133  133
grey53               135   135  135
grey54               138   138  138
grey55               140   140  140
grey56               143   143  143
grey57               145   145  145
grey58               148   148  148
grey59               150   150  150
grey60               153   153  153
grey61               156   156  156
grey62               158   158  158
grey63               161   161  161
grey64               163   163  163
grey65               166   166  166
grey66               168   168  168
grey67               171   171  171
grey68               173   173  173
grey69               176   176  176
grey70               179   179  179
grey71               181   181  181
grey72               184   184  184
grey73               186   186  186
grey74               189   189  189
grey75               191   191  191
grey76               194   194  194
grey77               196   196  196
grey78               199   199  199
grey79               201   201  201
grey80               204   204  204
grey81               207   207  207
grey82               209   209  209
grey83               212   212  212
grey84               214   214  214
grey85               217   217  217
grey86               219   219  219
grey87               222   222  222
grey88               224   224  224
grey89               227   227  227
grey90               229   229  229
grey91               232   232  232
grey92               235   235  235
grey93               237   237  237
grey94               240   240  240
grey95               242   242  242
grey96               245   245  245
grey97               247   247  247
grey98               250   250  250
grey99               252   252  252
grey100              255   255  255
honeydew             240   255  240
honeydew1            240   255  240
honeydew2            224   238  224
honeydew3            193   205  193
honeydew4            131   139  131
hotpink              255   105  180
hotpink1             255   110  180
hotpink2             238   106  167
hotpink3             205    96  144
hotpink4             139    58   98
indianred            205    92   92
indianred1           255   106  106
indianred2           238    99   99
indianred3           205    85   85
indianred4           139    58   58
ivory                255   255  240
ivory1               255   255  240
ivory2               238   238  224
ivory3               205   205  193
ivory4               139   139  131
khaki                240   230  140
khaki1               255   246  143
khaki2               238   230  133
khaki3               205   198  115
khaki4               139   134   78
lavender             230   230  250
lavenderblush        255   240  245
lavenderblush1       255   240  245
lavenderblush2       238   224  229
lavenderblush3       205   193  197
lavenderblush4       139   131  134
lawngreen            124   252    0
lemonchiffon         255   250  205
lemonchiffon1        255   250  205
lemonchiffon2        238   233  191
lemonchiffon3        205   201  165
lemonchiffon4        139   137  112
lightblue            173   216  230
lightblue1           191   239  255
lightblue2           178   223  238
lightblue3           154   192  205
lightblue4           104   131  139
lightcoral           240   128  128
lightcyan            224   255  255
lightcyan1           224   255  255
lightcyan2           209   238  238
lightcyan3           180   205  205
lightcyan4           122   139  139
lightgoldenrod       238   221  130
lightgoldenrod1      255   236  139
lightgoldenrod2      238   220  130
lightgoldenrod3      205   190  112
lightgoldenrod4      139   129   76
lightgoldenrodyellow 250   250  210
lightgray            211   211  211
lightgreen           144   238  144
lightgrey            211   211  211
lightpink            255   182  193
lightpink1           255   174  185
lightpink2           238   162  173
lightpink3           205   140  149
lightpink4           139    95  101
lightsalmon          255   160  122
lightsalmon1         255   160  122
lightsalmon2         238   149  114
lightsalmon3         205   129   98
lightsalmon4         139    87   66
lightseagreen         32   178  170
lightskyblue         135   206  250
lightskyblue1        176   226  255
lightskyblue2        164   211  238
lightskyblue3        141   182  205
lightskyblue4         96   123  139
lightslateblue       132   112  255
lightslategray       119   136  153
lightslategrey       119   136  153
lightsteelblue       176   196  222
lightsteelblue1      202   225  255
lightsteelblue2      188   210  238
lightsteelblue3      162   181  205
lightsteelblue4      110   123  139
lightyellow          255   255  224
lightyellow1         255   255  224
lightyellow2         238   238  209
lightyellow3         205   205  180
lightyellow4         139   139  122
limegreen             50   205   50
linen                250   240  230
magenta              255     0  255
magenta1             255     0  255
magenta2             238     0  238
magenta3             205     0  205
magenta4             139     0  139
maroon               176    48   96
maroon1              255    52  179
maroon2              238    48  167
maroon3              205    41  144
maroon4              139    28   98
mediumaquamarine     102   205  170
mediumblue             0     0  205
mediumorchid         186    85  211
mediumorchid1        224   102  255
mediumorchid2        209    95  238
mediumorchid3        180    82  205
mediumorchid4        122    55  139
mediumpurple         147   112  219
mediumpurple1        171   130  255
mediumpurple2        159   121  238
mediumpurple3        137   104  205
mediumpurple4         93    71  139
mediumseagreen        60   179  113
mediumslateblue      123   104  238
mediumspringgreen      0   250  154
mediumturquoise       72   209  204
mediumvioletred      199    21  133
midnightblue          25    25  112
mintcream            245   255  250
mistyrose            255   228  225
mistyrose1           255   228  225
mistyrose2           238   213  210
mistyrose3           205   183  181
mistyrose4           139   125  123
moccasin             255   228  181
navajowhite          255   222  173
navajowhite1         255   222  173
navajowhite2         238   207  161
navajowhite3         205   179  139
navajowhite4         139   121   94
navy                   0     0  128
navyblue               0     0  128
oldlace              253   245  230
olivedrab            107   142   35
olivedrab1           192   255   62
olivedrab2           179   238   58
olivedrab3           154   205   50
olivedrab4           105   139   34
orange               255   165    0
orange1              255   165    0
orange2              238   154    0
orange3              205   133    0
orange4              139    90    0
orangered            255    69    0
orangered1           255    69    0
orangered2           238    64    0
orangered3           205    55    0
orangered4           139    37    0
orchid               218   112  214
orchid1              255   131  250
orchid2              238   122  233
orchid3              205   105  201
orchid4              139    71  137
palegoldenrod        238   232  170
palegreen            152   251  152
palegreen1           154   255  154
palegreen2           144   238  144
palegreen3           124   205  124
palegreen4            84   139   84
paleturquoise        175   238  238
paleturquoise1       187   255  255
paleturquoise2       174   238  238
paleturquoise3       150   205  205
paleturquoise4       102   139  139
palevioletred        219   112  147
palevioletred1       255   130  171
palevioletred2       238   121  159
palevioletred3       205   104  137
palevioletred4       139    71   93
papayawhip           255   239  213
peachpuff            255   218  185
peachpuff1           255   218  185
peachpuff2           238   203  173
peachpuff3           205   175  149
peachpuff4           139   119  101
peru                 205   133   63
pink                 255   192  203
pink1                255   181  197
pink2                238   169  184
pink3                205   145  158
pink4                139    99  108
plum                 221   160  221
plum1                255   187  255
plum2                238   174  238
plum3                205   150  205
plum4                139   102  139
powderblue           176   224  230
purple               160    32  240
purple1              155    48  255
purple2              145    44  238
purple3              125    38  205
purple4               85    26  139
red                  255     0    0
red1                 255     0    0
red2                 238     0    0
red3                 205     0    0
red4                 139     0    0
rosybrown            188   143  143
rosybrown1           255   193  193
rosybrown2           238   180  180
rosybrown3           205   155  155
rosybrown4           139   105  105
royalblue             65   105  225
royalblue1            72   118  255
royalblue2            67   110  238
royalblue3            58    95  205
royalblue4            39    64  139
saddlebrown          139    69   19
salmon               250   128  114
salmon1              255   140  105
salmon2              238   130   98
salmon3              205   112   84
salmon4              139    76   57
sandybrown           244   164   96
seagreen              46   139   87
seagreen1             84   255  159
seagreen2             78   238  148
seagreen3             67   205  128
seagreen4             46   139   87
seashell             255   245  238
seashell1            255   245  238
seashell2            238   229  222
seashell3            205   197  191
seashell4            139   134  130
sienna               160    82   45
sienna1              255   130   71
sienna2              238   121   66
sienna3              205   104   57
sienna4              139    71   38
skyblue              135   206  235
skyblue1             135   206  255
skyblue2             126   192  238
skyblue3             108   166  205
skyblue4              74   112  139
slateblue            106    90  205
slateblue1           131   111  255
slateblue2           122   103  238
slateblue3           105    89  205
slateblue4            71    60  139
slategray            112   128  144
slategray1           198   226  255
slategray2           185   211  238
slategray3           159   182  205
slategray4           108   123  139
slategrey            112   128  144
snow                 255   250  250
snow1                255   250  250
snow2                238   233  233
snow3                205   201  201
snow4                139   137  137
springgreen            0   255  127
springgreen1           0   255  127
springgreen2           0   238  118
springgreen3           0   205  102
springgreen4           0   139   69
steelblue             70   130  180
steelblue1            99   184  255
steelblue2            92   172  238
steelblue3            79   148  205
steelblue4            54   100  139
tan                  210   180  140
tan1                 255   165   79
tan2                 238   154   73
tan3                 205   133   63
tan4                 139    90   43
thistle              216   191  216
thistle1             255   225  255
thistle2             238   210  238
thistle3             205   181  205
thistle4             139   123  139
tomato               255    99   71
tomato1              255    99   71
tomato2              238    92   66
tomato3              205    79   57
tomato4              139    54   38
turquoise             64   224  208
turquoise1             0   245  255
turquoise2             0   229  238
turquoise3             0   197  205
turquoise4             0   134  139
violet               238   130  238
violetred            208    32  144
violetred1           255    62  150
violetred2           238    58  140
violetred3           205    50  120
violetred4           139    34   82
wheat                245   222  179
wheat1               255   231  186
wheat2               238   216  174
wheat3               205   186  150
wheat4               139   126  102
whitesmoke           245   245  245
yellow               255   255    0
yellow1              255   255    0
yellow2              238   238    0
yellow3              205   205    0
yellow4              139   139    0
yellowgreen          154   205   50
> 
> ccodes <- c(256^(2:0) %*% crgb)  # = internal codes
> ## How many names are 'aliases' of each other:
> table(tcc <- table(ccodes))

  1   2   3   4 
352 146   3   1 
> length(uc <- unique(sort(ccodes))) # 502
[1] 502
> ## All the multiply named colors:
> mult <- uc[tcc >= 2]
> cl <- lapply(mult, function(m) cc[ccodes == m])
> names(cl) <- apply(col2rgb(sapply(cl, function(x)x[1])),
+                    2, function(n)paste(n, collapse = ","))
> utils::str(cl)
List of 150
 $ 0,0,0      : chr [1:3] "black" "gray0" "grey0"
 $ 0,0,128    : chr [1:2] "navy" "navyblue"
 $ 0,0,139    : chr [1:2] "blue4" "darkblue"
 $ 0,0,205    : chr [1:2] "blue3" "mediumblue"
 $ 0,0,255    : chr [1:2] "blue" "blue1"
 $ 0,139,139  : chr [1:2] "cyan4" "darkcyan"
 $ 0,191,255  : chr [1:2] "deepskyblue" "deepskyblue1"
 $ 0,255,0    : chr [1:2] "green" "green1"
 $ 0,255,127  : chr [1:2] "springgreen" "springgreen1"
 $ 0,255,255  : chr [1:2] "cyan" "cyan1"
 $ 3,3,3      : chr [1:2] "gray1" "grey1"
 $ 5,5,5      : chr [1:2] "gray2" "grey2"
 $ 8,8,8      : chr [1:2] "gray3" "grey3"
 $ 10,10,10   : chr [1:2] "gray4" "grey4"
 $ 13,13,13   : chr [1:2] "gray5" "grey5"
 $ 15,15,15   : chr [1:2] "gray6" "grey6"
 $ 18,18,18   : chr [1:2] "gray7" "grey7"
 $ 20,20,20   : chr [1:2] "gray8" "grey8"
 $ 23,23,23   : chr [1:2] "gray9" "grey9"
 $ 26,26,26   : chr [1:2] "gray10" "grey10"
 $ 28,28,28   : chr [1:2] "gray11" "grey11"
 $ 30,144,255 : chr [1:2] "dodgerblue" "dodgerblue1"
 $ 31,31,31   : chr [1:2] "gray12" "grey12"
 $ 33,33,33   : chr [1:2] "gray13" "grey13"
 $ 36,36,36   : chr [1:2] "gray14" "grey14"
 $ 38,38,38   : chr [1:2] "gray15" "grey15"
 $ 41,41,41   : chr [1:2] "gray16" "grey16"
 $ 43,43,43   : chr [1:2] "gray17" "grey17"
 $ 46,46,46   : chr [1:2] "gray18" "grey18"
 $ 46,139,87  : chr [1:2] "seagreen" "seagreen4"
 $ 47,79,79   : chr [1:2] "darkslategray" "darkslategrey"
 $ 48,48,48   : chr [1:2] "gray19" "grey19"
 $ 51,51,51   : chr [1:2] "gray20" "grey20"
 $ 54,54,54   : chr [1:2] "gray21" "grey21"
 $ 56,56,56   : chr [1:2] "gray22" "grey22"
 $ 59,59,59   : chr [1:2] "gray23" "grey23"
 $ 61,61,61   : chr [1:2] "gray24" "grey24"
 $ 64,64,64   : chr [1:2] "gray25" "grey25"
 $ 66,66,66   : chr [1:2] "gray26" "grey26"
 $ 69,69,69   : chr [1:2] "gray27" "grey27"
 $ 71,71,71   : chr [1:2] "gray28" "grey28"
 $ 74,74,74   : chr [1:2] "gray29" "grey29"
 $ 77,77,77   : chr [1:2] "gray30" "grey30"
 $ 79,79,79   : chr [1:2] "gray31" "grey31"
 $ 82,82,82   : chr [1:2] "gray32" "grey32"
 $ 84,84,84   : chr [1:2] "gray33" "grey33"
 $ 87,87,87   : chr [1:2] "gray34" "grey34"
 $ 89,89,89   : chr [1:2] "gray35" "grey35"
 $ 92,92,92   : chr [1:2] "gray36" "grey36"
 $ 94,94,94   : chr [1:2] "gray37" "grey37"
 $ 97,97,97   : chr [1:2] "gray38" "grey38"
 $ 99,99,99   : chr [1:2] "gray39" "grey39"
 $ 102,102,102: chr [1:2] "gray40" "grey40"
 $ 102,205,170: chr [1:2] "aquamarine3" "mediumaquamarine"
 $ 105,105,105: chr [1:4] "dimgray" "dimgrey" "gray41" "grey41"
 $ 107,107,107: chr [1:2] "gray42" "grey42"
 $ 110,110,110: chr [1:2] "gray43" "grey43"
 $ 112,112,112: chr [1:2] "gray44" "grey44"
 $ 112,128,144: chr [1:2] "slategray" "slategrey"
 $ 115,115,115: chr [1:2] "gray45" "grey45"
 $ 117,117,117: chr [1:2] "gray46" "grey46"
 $ 119,136,153: chr [1:2] "lightslategray" "lightslategrey"
 $ 120,120,120: chr [1:2] "gray47" "grey47"
 $ 122,122,122: chr [1:2] "gray48" "grey48"
 $ 125,125,125: chr [1:2] "gray49" "grey49"
 $ 127,127,127: chr [1:2] "gray50" "grey50"
 $ 127,255,0  : chr [1:2] "chartreuse" "chartreuse1"
 $ 127,255,212: chr [1:2] "aquamarine" "aquamarine1"
 $ 130,130,130: chr [1:2] "gray51" "grey51"
 $ 133,133,133: chr [1:2] "gray52" "grey52"
 $ 135,135,135: chr [1:2] "gray53" "grey53"
 $ 138,138,138: chr [1:2] "gray54" "grey54"
 $ 139,0,0    : chr [1:2] "darkred" "red4"
 $ 139,0,139  : chr [1:2] "darkmagenta" "magenta4"
 $ 139,69,19  : chr [1:2] "chocolate4" "saddlebrown"
 $ 140,140,140: chr [1:2] "gray55" "grey55"
 $ 143,143,143: chr [1:2] "gray56" "grey56"
 $ 144,238,144: chr [1:2] "lightgreen" "palegreen2"
 $ 145,145,145: chr [1:2] "gray57" "grey57"
 $ 148,148,148: chr [1:2] "gray58" "grey58"
 $ 150,150,150: chr [1:2] "gray59" "grey59"
 $ 153,153,153: chr [1:2] "gray60" "grey60"
 $ 154,205,50 : chr [1:2] "olivedrab3" "yellowgreen"
 $ 156,156,156: chr [1:2] "gray61" "grey61"
 $ 158,158,158: chr [1:2] "gray62" "grey62"
 $ 161,161,161: chr [1:2] "gray63" "grey63"
 $ 163,163,163: chr [1:2] "gray64" "grey64"
 $ 166,166,166: chr [1:2] "gray65" "grey65"
 $ 168,168,168: chr [1:2] "gray66" "grey66"
 $ 169,169,169: chr [1:2] "darkgray" "darkgrey"
 $ 171,171,171: chr [1:2] "gray67" "grey67"
 $ 173,173,173: chr [1:2] "gray68" "grey68"
 $ 176,176,176: chr [1:2] "gray69" "grey69"
 $ 179,179,179: chr [1:2] "gray70" "grey70"
 $ 181,181,181: chr [1:2] "gray71" "grey71"
 $ 184,184,184: chr [1:2] "gray72" "grey72"
 $ 186,186,186: chr [1:2] "gray73" "grey73"
 $ 189,189,189: chr [1:2] "gray74" "grey74"
 $ 190,190,190: chr [1:2] "gray" "grey"
  [list output truncated]
> ## Not run: 
> ##D  if(require(xgobi)) { ## Look at the color cube dynamically :
> ##D    tc <- t(crgb[, !duplicated(ccodes)])
> ##D    table(is.gray <- tc[,1] == tc[,2] & tc[,2] == tc[,3])  # (397, 105)
> ##D    xgobi(tc, color = c("gold", "gray")[1 + is.gray])
> ##D  }
> ## End(Not run)
> 
> 
> 
> cleanEx()
> nameEx("colorRamp")
> ### * colorRamp
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: colorRamp
> ### Title: Color interpolation
> ### Aliases: colorRamp colorRampPalette
> ### Keywords: color
> 
> ### ** Examples
> 
> ## Both return a *function* :
> colorRamp(c("red", "green"))( (0:4)/4 ) ## (x) , x in [0,1]
       [,1]   [,2] [,3]
[1,] 255.00   0.00    0
[2,] 191.25  63.75    0
[3,] 127.50 127.50    0
[4,]  63.75 191.25    0
[5,]   0.00 255.00    0
> colorRampPalette(c("blue", "red"))( 4 ) ## (n)
[1] "#0000FF" "#5500AA" "#AA0055" "#FF0000"
> ## a ramp in opacity of blue values
> colorRampPalette(c(rgb(0,0,1,1), rgb(0,0,1,0)), alpha = TRUE)(8)
[1] "#0000FFFF" "#0000FFDA" "#0000FFB6" "#0000FF91" "#0000FF6D" "#0000FF48"
[7] "#0000FF24" "#0000FF00"
> 
> require(graphics)
> 
> ## Here space="rgb" gives palettes that vary only in saturation,
> ## as intended.
> ## With space="Lab" the steps are more uniform, but the hues
> ## are slightly purple.
> filled.contour(volcano,
+                color.palette =
+                    colorRampPalette(c("red", "white", "blue")),
+                asp = 1)
> filled.contour(volcano,
+                color.palette =
+                    colorRampPalette(c("red", "white", "blue"),
+                                     space = "Lab"),
+                asp = 1)
> 
> ## Interpolating a 'sequential' ColorBrewer palette
> YlOrBr <- c("#FFFFD4", "#FED98E", "#FE9929", "#D95F0E", "#993404")
> filled.contour(volcano,
+                color.palette = colorRampPalette(YlOrBr, space = "Lab"),
+                asp = 1)
> filled.contour(volcano,
+                color.palette = colorRampPalette(YlOrBr, space = "Lab",
+                                                 bias = 0.5),
+                asp = 1)
> 
> ## 'jet.colors' is "as in Matlab"
> ## (and hurting the eyes by over-saturation)
> jet.colors <-
+   colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan",
+                      "#7FFF7F", "yellow", "#FF7F00", "red", "#7F0000"))
> filled.contour(volcano, color.palette = jet.colors, asp = 1)
> 
> ## space="Lab" helps when colors don't form a natural sequence
> m <- outer(1:20,1:20,function(x,y) sin(sqrt(x*y)/3))
> rgb.palette <- colorRampPalette(c("red", "orange", "blue"),
+                                 space = "rgb")
> Lab.palette <- colorRampPalette(c("red", "orange", "blue"),
+                                 space = "Lab")
> filled.contour(m, col = rgb.palette(20))
> filled.contour(m, col = Lab.palette(20))
> 
> 
> 
> cleanEx()
> nameEx("colors")
> ### * colors
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: colors
> ### Title: Color Names
> ### Aliases: colors colours
> ### Keywords: color dplot sysdata
> 
> ### ** Examples
> 
> cl <- colors()
> length(cl); cl[1:20]
[1] 657
 [1] "white"         "aliceblue"     "antiquewhite"  "antiquewhite1"
 [5] "antiquewhite2" "antiquewhite3" "antiquewhite4" "aquamarine"   
 [9] "aquamarine1"   "aquamarine2"   "aquamarine3"   "aquamarine4"  
[13] "azure"         "azure1"        "azure2"        "azure3"       
[17] "azure4"        "beige"         "bisque"        "bisque1"      
> 
> length(cl. <- colors(TRUE))
[1] 502
> ## only 502 of the 657 named ones
> 
> ## ----------- Show all named colors and more:
> demo("colors")


	demo(colors)
	---- ~~~~~~

> ### ----------- Show (almost) all named colors ---------------------
> 
> ## 1) with traditional 'graphics' package:
> showCols1 <- function(bg = "gray", cex = 0.75, srt = 30) {
+     m <- ceiling(sqrt(n <- length(cl <- colors())))
+     length(cl) <- m*m; cm <- matrix(cl, m)
+     ##
+     require("graphics")
+     op <- par(mar=rep(0,4), ann=FALSE, bg = bg); on.exit(par(op))
+     plot(1:m,1:m, type="n", axes=FALSE)
+     text(col(cm), rev(row(cm)), cm,  col = cl, cex=cex, srt=srt)
+ }

> showCols1()

> ## 2) with 'grid' package:
> showCols2 <- function(bg = "grey", cex = 0.75, rot = 30) {
+     m <- ceiling(sqrt(n <- length(cl <- colors())))
+     length(cl) <- m*m; cm <- matrix(cl, m)
+     ##
+     require("grid")
+     grid.newpage(); vp <- viewport(width = .92, height = .92)
+     grid.rect(gp=gpar(fill=bg))
+     grid.text(cm, x = col(cm)/m, y = rev(row(cm))/m, rot = rot,
+               vp=vp, gp=gpar(cex = cex, col = cm))
+ }

> showCols2()
Loading required package: grid

> showCols2(bg = "gray33")

> ###
> 
> ##' @title Comparing Colors
> ##' @param col
> ##' @param nrow
> ##' @param ncol
> ##' @param txt.col
> ##' @return the grid layout, invisibly
> ##' @author Marius Hofert, originally
> plotCol <- function(col, nrow=1, ncol=ceiling(length(col) / nrow),
+                     txt.col="black") {
+     stopifnot(nrow >= 1, ncol >= 1)
+     if(length(col) > nrow*ncol)
+         warning("some colors will not be shown")
+     require(grid)
+     grid.newpage()
+     gl <- grid.layout(nrow, ncol)
+     pushViewport(viewport(layout=gl))
+     ic <- 1
+     for(i in 1:nrow) {
+         for(j in 1:ncol) {
+             pushViewport(viewport(layout.pos.row=i, layout.pos.col=j))
+             grid.rect(gp= gpar(fill=col[ic]))
+             grid.text(col[ic], gp=gpar(col=txt.col))
+             upViewport()
+             ic <- ic+1
+         }
+     }
+     upViewport()
+     invisible(gl)
+ }

> ## A Chocolate Bar of colors:
> plotCol(c("#CC8C3C", paste0("chocolate", 2:4),
+           paste0("darkorange", c("",1:2)), paste0("darkgoldenrod", 1:2),
+           "orange", "orange1", "sandybrown", "tan1", "tan2"),
+         nrow=2)

> ##' Find close R colors() to a given color {original by Marius Hofert)
> ##' using Euclidean norm in (HSV / RGB / ...) color space
> nearRcolor <- function(rgb, cSpace = c("hsv", "rgb255", "Luv", "Lab"),
+                        dist = switch(cSpace, "hsv" = 0.10, "rgb255" = 30,
+                        "Luv" = 15, "Lab" = 12))
+ {
+     if(is.character(rgb)) rgb <- col2rgb(rgb)
+     stopifnot(length(rgb <- as.vector(rgb)) == 3)
+     Rcol <- col2rgb(.cc <- colors())
+     uniqC <- !duplicated(t(Rcol)) # gray9 == grey9 (etc)
+     Rcol <- Rcol[, uniqC] ; .cc <- .cc[uniqC]
+     cSpace <- match.arg(cSpace)
+     convRGB2 <- function(Rgb, to)
+         t(convertColor(t(Rgb), from="sRGB", to=to, scale.in=255))
+     ## the transformation,  rgb{0..255} --> cSpace :
+     TransF <- switch(cSpace,
+                      "rgb255" = identity,
+                      "hsv" = rgb2hsv,
+                      "Luv" = function(RGB) convRGB2(RGB, "Luv"),
+                      "Lab" = function(RGB) convRGB2(RGB, "Lab"))
+     d <- sqrt(colSums((TransF(Rcol) - as.vector(TransF(rgb)))^2))
+     iS <- sort.list(d[near <- d <= dist])# sorted: closest first
+     setNames(.cc[near][iS], format(zapsmall(d[near][iS]), digits=3))
+ }

> nearRcolor(col2rgb("tan2"), "rgb")
         0.0         21.1         25.8         29.5 
      "tan2"       "tan1" "sandybrown"    "sienna1" 

> nearRcolor(col2rgb("tan2"), "hsv")
      0.0000       0.0410       0.0618       0.0638       0.0667       0.0766 
      "tan2"    "sienna2"     "coral2"    "tomato2"       "tan1"      "coral" 
      0.0778       0.0900       0.0912       0.0918 
   "sienna1" "sandybrown"     "coral1"     "tomato" 

> nearRcolor(col2rgb("tan2"), "Luv")
        0.00         7.42         7.48        12.41        13.69 
      "tan2"       "tan1" "sandybrown"    "orange3"    "orange2" 

> nearRcolor(col2rgb("tan2"), "Lab")
        0.00         5.56         8.08        11.31 
      "tan2"       "tan1" "sandybrown"       "peru" 

> nearRcolor("#334455")
         0.0867 
"darkslategray" 

> ## Now, consider choosing a color by looking in the
> ## neighborhood of one you know :
> 
> plotCol(nearRcolor("deepskyblue", "rgb", dist=50))

> plotCol(nearRcolor("deepskyblue", dist=.1))

> plotCol(nearRcolor("tomato", "rgb", dist= 50), nrow=3)

> plotCol(nearRcolor("tomato", "hsv", dist=.12), nrow=3)

> plotCol(nearRcolor("tomato", "Luv", dist= 25), nrow=3)

> plotCol(nearRcolor("tomato", "Lab", dist= 18), nrow=3)
> ## -----------
> 
> 
> 
> cleanEx()

detaching ‘package:grid’

> nameEx("contourLines")
> ### * contourLines
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: contourLines
> ### Title: Calculate Contour Lines
> ### Aliases: contourLines
> ### Keywords: dplot
> 
> ### ** Examples
> 
> x <- 10*1:nrow(volcano)
> y <- 10*1:ncol(volcano)
> cl <- contourLines(x, y, volcano)
> ## summarize the sizes of each the contour lines :
> cbind(lev = vapply(cl, `[[`, .5, "level"),
+        n  = vapply(cl, function(l) length(l$x), 1))
      lev   n
 [1,] 100  47
 [2,] 100  16
 [3,] 100  11
 [4,] 110  45
 [5,] 110  48
 [6,] 110 126
 [7,] 110  14
 [8,] 120 270
 [9,] 130 259
[10,] 140 245
[11,] 150 207
[12,] 150  13
[13,] 160 165
[14,] 160  31
[15,] 170 169
[16,] 170   5
[17,] 170  21
[18,] 180 105
[19,] 180  15
[20,] 190  49
> 
> z <- outer(-9:25, -9:25)
> pretty(range(z), 10) # -300 -200 ... 600 700
 [1] -300 -200 -100    0  100  200  300  400  500  600  700
> utils::str(c2 <- contourLines(z))
List of 12
 $ :List of 3
  ..$ level: num -200
  ..$ x    : num [1:4] 0 0.00895 0.01961 0.02844
  ..$ y    : num [1:4] 0.918 0.941 0.971 1
 $ :List of 3
  ..$ level: num -200
  ..$ x    : num [1:4] 0.918 0.941 0.971 1
  ..$ y    : num [1:4] 0 0.00895 0.01961 0.02844
 $ :List of 3
  ..$ level: num -100
  ..$ x    : num [1:19] 0 0.0196 0.0294 0.0385 0.0546 ...
  ..$ y    : num [1:19] 0.592 0.618 0.632 0.647 0.676 ...
 $ :List of 3
  ..$ level: num -100
  ..$ x    : num [1:19] 0.592 0.618 0.632 0.647 0.676 ...
  ..$ y    : num [1:19] 0 0.0196 0.0294 0.0385 0.0546 ...
 $ :List of 3
  ..$ level: num 0
  ..$ x    : num [1:34] 0 0.0294 0.0588 0.0882 0.1176 ...
  ..$ y    : num [1:34] 0.267 0.268 0.268 0.268 0.269 ...
 $ :List of 3
  ..$ level: num 0
  ..$ x    : num [1:34] 0.267 0.268 0.268 0.268 0.269 ...
  ..$ y    : num [1:34] 0 0.0294 0.0588 0.0882 0.1176 ...
 $ :List of 3
  ..$ level: num 100
  ..$ x    : num [1:44] 1 0.995 0.971 0.941 0.912 ...
  ..$ y    : num [1:44] 0.381 0.382 0.387 0.393 0.398 ...
 $ :List of 3
  ..$ level: num 200
  ..$ x    : num [1:36] 1 0.997 0.971 0.941 0.918 ...
  ..$ y    : num [1:36] 0.499 0.5 0.51 0.52 0.529 ...
 $ :List of 3
  ..$ level: num 300
  ..$ x    : num [1:28] 1 0.998 0.971 0.943 0.941 ...
  ..$ y    : num [1:28] 0.617 0.618 0.632 0.647 0.648 ...
 $ :List of 3
  ..$ level: num 400
  ..$ x    : num [1:20] 1 0.999 0.971 0.957 0.941 ...
  ..$ y    : num [1:20] 0.734 0.735 0.755 0.765 0.776 ...
 $ :List of 3
  ..$ level: num 500
  ..$ x    : num [1:12] 1 0.999 0.971 0.965 0.941 ...
  ..$ y    : num [1:12] 0.852 0.853 0.877 0.882 0.904 ...
 $ :List of 3
  ..$ level: num 600
  ..$ x    : num [1:4] 1 0.999 0.971 0.97
  ..$ y    : num [1:4] 0.97 0.971 0.999 1
>    # no segments for {-300, 700};
>    #  2 segments for {-200, -100, 0}
>    #  1 segment  for  100:600
> 
> 
> 
> cleanEx()
> nameEx("convertColor")
> ### * convertColor
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: convertColor
> ### Title: Convert between Colour Spaces
> ### Aliases: convertColor colorspaces
> ### Keywords: color
> 
> ### ** Examples
> 
> ## The displayable colors from four planes of Lab space
> ab <- expand.grid(a = (-10:15)*10,
+                   b = (-15:10)*10)
> require(graphics); require(stats) # for na.omit
> par(mfrow = c(2, 2), mar = .1+c(3, 3, 3, .5), mgp = c(2,  .8,  0))
> 
> Lab <- cbind(L = 20, ab)
> srgb <- convertColor(Lab, from = "Lab", to = "sRGB", clip = NA)
> clipped <- attr(na.omit(srgb), "na.action")
> srgb[clipped, ] <- 0
> cols <- rgb(srgb[, 1], srgb[, 2], srgb[, 3])
> image((-10:15)*10, (-15:10)*10, matrix(1:(26*26), ncol = 26), col = cols,
+   xlab = "a", ylab = "b", main = "Lab: L=20")
> 
> Lab <- cbind(L = 40, ab)
> srgb <- convertColor(Lab, from = "Lab", to = "sRGB", clip = NA)
> clipped <- attr(na.omit(srgb), "na.action")
> srgb[clipped, ] <- 0
> cols <- rgb(srgb[, 1], srgb[, 2], srgb[, 3])
> image((-10:15)*10, (-15:10)*10, matrix(1:(26*26), ncol = 26), col = cols,
+   xlab = "a", ylab = "b", main = "Lab: L=40")
> 
> Lab <- cbind(L = 60, ab)
> srgb <- convertColor(Lab, from = "Lab", to = "sRGB", clip = NA)
> clipped <- attr(na.omit(srgb), "na.action")
> srgb[clipped, ] <- 0
> cols <- rgb(srgb[, 1], srgb[, 2], srgb[, 3])
> image((-10:15)*10, (-15:10)*10, matrix(1:(26*26), ncol = 26), col = cols,
+   xlab = "a", ylab = "b", main = "Lab: L=60")
> 
> Lab <- cbind(L = 80, ab)
> srgb <- convertColor(Lab, from = "Lab", to = "sRGB", clip = NA)
> clipped <- attr(na.omit(srgb), "na.action")
> srgb[clipped, ] <- 0
> cols <- rgb(srgb[, 1], srgb[, 2], srgb[, 3])
> image((-10:15)*10, (-15:10)*10, matrix(1:(26*26), ncol = 26), col = cols,
+   xlab = "a", ylab = "b", main = "Lab: L=80")
> 
> cols <- t(col2rgb(palette())); rownames(cols) <- palette(); cols
        red green blue
black     0     0    0
#DF536B 223    83  107
#61D04F  97   208   79
#2297E6  34   151  230
#28E2E5  40   226  229
#CD0BBC 205    11  188
#F5C710 245   199   16
gray62  158   158  158
> zapsmall(lab <- convertColor(cols, from = "sRGB", to = "Lab", scale.in = 255))
               L         a         b
black    0.00000   0.00000   0.00000
#DF536B 55.16051  56.30900  16.18063
#61D04F 74.89688 -55.97739  53.00681
#2297E6 59.98342  -3.54255 -48.62932
#28E2E5 82.01645 -41.73498 -14.10432
#CD0BBC 48.23048  79.84315 -42.53326
#F5C710 82.05072   2.31748  81.63638
gray62  65.11425   0.00000   0.00000
> stopifnot(all.equal(cols, # converting back.. getting the original:
+    round(convertColor(lab, from = "Lab", to = "sRGB", scale.out = 255)),
+                     check.attributes = FALSE))
> 
> 
> 
> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
> cleanEx()
> nameEx("densCols")
> ### * densCols
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: densCols
> ### Title: Colors for Smooth Density Plots
> ### Aliases: densCols blues9
> ### Keywords: dplot
> 
> ### ** Examples
> 
> 
> cleanEx()
> nameEx("dev")
> ### * dev
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: dev
> ### Title: Control Multiple Devices
> ### Aliases: dev.cur dev.list dev.next dev.prev dev.off dev.set dev.new
> ###   graphics.off
> ### Keywords: device iplot
> 
> ### ** Examples
> 
> ## Not run: 
> ##D ## Unix-specific example
> ##D x11()
> ##D plot(1:10)
> ##D x11()
> ##D plot(rnorm(10))
> ##D dev.set(dev.prev())
> ##D abline(0, 1) # through the 1:10 points
> ##D dev.set(dev.next())
> ##D abline(h = 0, col = "gray") # for the residual plot
> ##D dev.set(dev.prev())
> ##D dev.off(); dev.off() #- close the two X devices
> ## End(Not run)
> 
> 
> 
> cleanEx()
> nameEx("dev.capabilities")
> ### * dev.capabilities
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: dev.capabilities
> ### Title: Query Capabilities of the Current Graphics Device
> ### Aliases: dev.capabilities
> ### Keywords: dplot
> 
> ### ** Examples
> 
> dev.capabilities()
$semiTransparency
[1] TRUE

$transparentBackground
[1] "semi"

$rasterImage
[1] "yes"

$capture
[1] FALSE

$locator
[1] FALSE

$events
character(0)

$patterns
[1] "LinearGradient" "RadialGradient" "TilingPattern" 

$clippingPaths
[1] TRUE

$masks
[1] "alpha"     "luminance"

$compositing
 [1] "multiply"    "screen"      "overlay"     "darken"      "lighten"    
 [6] "color.dodge" "color.burn"  "hard.light"  "soft.light"  "difference" 
[11] "exclusion"  

$transformations
[1] TRUE

$paths
[1] TRUE

> 
> 
> 
> cleanEx()
> nameEx("dev.interactive")
> ### * dev.interactive
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: dev.interactive
> ### Title: Is the Current Graphics Device Interactive?
> ### Aliases: dev.interactive deviceIsInteractive
> ### Keywords: device
> 
> ### ** Examples
> 
> dev.interactive()
[1] FALSE
> print(deviceIsInteractive(NULL))
[1] "X11"      "X11cairo" "quartz"   "windows"  "JavaGD"   "CairoWin" "CairoX11"
> 
> 
> 
> cleanEx()
> nameEx("dev.size")
> ### * dev.size
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: dev.size
> ### Title: Find Size of Device Surface
> ### Aliases: dev.size
> ### Keywords: dplot
> 
> ### ** Examples
> 
> dev.size("cm")
[1] 17.78 17.78
> 
> 
> 
> cleanEx()
> nameEx("dev2")
> ### * dev2
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: dev2
> ### Title: Copy Graphics Between Multiple Devices
> ### Aliases: dev.copy dev.print dev.copy2eps dev.copy2pdf dev.control
> ### Keywords: device
> 
> ### ** Examples
> 
> ## Not run: 
> ##D x11() # on a Unix-alike
> ##D plot(rnorm(10), main = "Plot 1")
> ##D dev.copy(device = x11)
> ##D mtext("Copy 1", 3)
> ##D dev.print(width = 6, height = 6, horizontal = FALSE) # prints it
> ##D dev.off(dev.prev())
> ##D dev.off()
> ## End(Not run)
> 
> 
> 
> cleanEx()
> nameEx("extendrange")
> ### * extendrange
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: extendrange
> ### Title: Extend a Numerical Range by a Small Percentage
> ### Aliases: extendrange
> ### Keywords: dplot
> 
> ### ** Examples
> 
> x <- 1:5
> (r <- range(x))         # 1    5
[1] 1 5
> extendrange(x)          # 0.8  5.2
[1] 0.8 5.2
> extendrange(x, f= 0.01) # 0.96 5.04
[1] 0.96 5.04
> 
> ## extend more to the right:
> extendrange(x, f=c(.01,.03)) # 0.96 5.12
[1] 0.96 5.12
> 
> ## Use 'r' if you have it already:
> stopifnot(identical(extendrange(r = r),
+                     extendrange(x)))
> 
> 
> 
> cleanEx()
> nameEx("getGraphicsEvent")
> ### * getGraphicsEvent
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: getGraphicsEvent
> ### Title: Wait for a mouse or keyboard event from a graphics window
> ### Aliases: getGraphicsEvent setGraphicsEventHandlers getGraphicsEventEnv
> ###   setGraphicsEventEnv
> ### Keywords: iplot
> 
> ### ** Examples
> 
> # This currently only works on the Windows, X11(type = "Xlib"), and
> # X11(type = "cairo") screen devices...
> ## Not run: 
> ##D savepar <- par(ask = FALSE)
> ##D dragplot <- function(..., xlim = NULL, ylim = NULL, xaxs = "r", yaxs = "r") {
> ##D     plot(..., xlim = xlim, ylim = ylim, xaxs = xaxs, yaxs = yaxs)
> ##D     startx <- NULL
> ##D     starty <- NULL
> ##D     prevx <- NULL
> ##D     prevy <- NULL
> ##D     usr <- NULL
> ##D 
> ##D     devset <- function()
> ##D         if (dev.cur() != eventEnv$which) dev.set(eventEnv$which)
> ##D 
> ##D     dragmousedown <- function(buttons, x, y) {
> ##D         startx <<- x
> ##D         starty <<- y
> ##D         prevx <<- 0
> ##D         prevy <<- 0
> ##D         devset()
> ##D         usr <<- par("usr")
> ##D         eventEnv$onMouseMove <- dragmousemove
> ##D         NULL
> ##D     }
> ##D 
> ##D     dragmousemove <- function(buttons, x, y) {
> ##D         devset()
> ##D         deltax <- diff(grconvertX(c(startx, x), "ndc", "user"))
> ##D         deltay <- diff(grconvertY(c(starty, y), "ndc", "user"))
> ##D 	if (abs(deltax-prevx) + abs(deltay-prevy) > 0) {
> ##D 	    plot(..., xlim = usr[1:2]-deltax, xaxs = "i",
> ##D 		      ylim = usr[3:4]-deltay, yaxs = "i")
> ##D 	    prevx <<- deltax
> ##D 	    prevy <<- deltay
> ##D 	}
> ##D         NULL
> ##D     }
> ##D 
> ##D     mouseup <- function(buttons, x, y) {
> ##D     	eventEnv$onMouseMove <- NULL
> ##D     }	
> ##D 
> ##D     keydown <- function(key) {
> ##D         if (key == "q") return(invisible(1))
> ##D         eventEnv$onMouseMove <- NULL
> ##D         NULL
> ##D     }
> ##D 
> ##D     setGraphicsEventHandlers(prompt = "Click and drag, hit q to quit",
> ##D                      onMouseDown = dragmousedown,
> ##D                      onMouseUp = mouseup,
> ##D                      onKeybd = keydown)
> ##D     eventEnv <- getGraphicsEventEnv()
> ##D }
> ##D 
> ##D dragplot(rnorm(1000), rnorm(1000))
> ##D getGraphicsEvent()
> ##D par(savepar)
> ## End(Not run)
> 
> 
> 
> cleanEx()
> nameEx("grSoftVersion")
> ### * grSoftVersion
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: grSoftVersion
> ### Title: Report Versions of Graphics Software
> ### Aliases: grSoftVersion
> 
> ### ** Examples
> 
> 
> 
> 
> cleanEx()
> nameEx("gray")
> ### * gray
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: gray
> ### Title: Gray Level Specification
> ### Aliases: gray grey
> ### Keywords: color
> 
> ### ** Examples
> 
> gray(0:8 / 8)
[1] "#000000" "#202020" "#404040" "#606060" "#808080" "#9F9F9F" "#BFBFBF"
[8] "#DFDFDF" "#FFFFFF"
> 
> 
> 
> cleanEx()
> nameEx("gray.colors")
> ### * gray.colors
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: gray.colors
> ### Title: Gray Color Palette
> ### Aliases: gray.colors grey.colors
> ### Keywords: color
> 
> ### ** Examples
> 
> require(graphics)
> 
> pie(rep(1, 12), col = gray.colors(12))
> barplot(1:12, col = gray.colors(12))
> 
> 
> 
> cleanEx()
> nameEx("hcl")
> ### * hcl
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: hcl
> ### Title: HCL Color Specification
> ### Aliases: hcl
> ### Keywords: color dplot
> 
> ### ** Examples
> 
> require(graphics)
> 
> # The Foley and Van Dam PhD Data.
> csd <- matrix(c( 4,2,4,6, 4,3,1,4, 4,7,7,1,
+                  0,7,3,2, 4,5,3,2, 5,4,2,2,
+                  3,1,3,0, 4,4,6,7, 1,10,8,7,
+                  1,5,3,2, 1,5,2,1, 4,1,4,3,
+                  0,3,0,6, 2,1,5,5), nrow = 4)
> 
> csphd <- function(colors)
+   barplot(csd, col = colors, ylim = c(0,30),
+           names.arg = 72:85, xlab = "Year", ylab = "Students",
+           legend.text = c("Winter", "Spring", "Summer", "Fall"),
+           main = "Computer Science PhD Graduates", las = 1)
> 
> # The Original (Metaphorical) Colors (Ouch!)
> csphd(c("blue", "green", "yellow", "orange"))
> 
> # A Color Tetrad (Maximal Color Differences)
> csphd(hcl(h = c(30, 120, 210, 300)))
> 
> # Same, but lighter and less colorful
> # Turn off automatic correction to make sure
> # that we have defined real colors.
> csphd(hcl(h = c(30, 120, 210, 300),
+           c = 20, l = 90, fixup = FALSE))
> 
> # Analogous Colors
> # Good for those with red/green color confusion
> csphd(hcl(h = seq(60, 240, by = 60)))
> 
> # Metaphorical Colors
> csphd(hcl(h = seq(210, 60, length.out = 4)))
> 
> # Cool Colors
> csphd(hcl(h = seq(120, 0, length.out = 4) + 150))
> 
> # Warm Colors
> csphd(hcl(h = seq(120, 0, length.out = 4) - 30))
> 
> # Single Color
> hist(stats::rnorm(1000), col = hcl(240))
> 
> ## Exploring the hcl() color space {in its mapping to R's sRGB colors}:
> demo(hclColors)


	demo(hclColors)
	---- ~~~~~~~~~

> ### ------ hcl() explorations
> 
> hcl.wheel <-
+     function(chroma = 35, lums = 0:100, hues = 1:360, asp = 1,
+              p.cex = 0.6, do.label = FALSE, rev.lum = FALSE,
+              fixup = TRUE)
+ {
+     ## Purpose: show chroma "sections" of hcl() color space; see  ?hcl
+     ## ----------------------------------------------------------------------
+     ## Arguments: chroma: can be vector -> multiple plots are done,
+     ##            lums, hues, fixup : all corresponding to hcl()'s args
+     ##            rev.lum: logical indicating if luminance
+     ## 			should go from outer to inner
+     ## ----------------------------------------------------------------------
+     ## Author: Martin Maechler, Date: 24 Jun 2005
+ 
+     require("graphics")
+     stopifnot(is.numeric(lums), lums >= 0, lums <= 100,
+               is.numeric(hues), hues >= 0, hues <= 360,
+               is.numeric(chroma), chroma >= 0, (nch <- length(chroma)) >= 1)
+     if(is.unsorted(hues)) hues <- sort(hues)
+     if(nch > 1) {
+         op <- par(mfrow= n2mfrow(nch), mar = c(0,0,0,0), xpd = TRUE)
+         on.exit(par(op))
+     }
+     for(i.c in 1:nch) {
+         plot(-1:1,-1:1, type="n", axes = FALSE, xlab="",ylab="", asp = asp)
+         ## main = sprintf("hcl(h = <angle>, c = %g)", chroma[i.c]),
+         text(0.4, 0.99, paste("chroma =", format(chroma[i.c])),
+              adj = 0, font = 4)
+         l.s <- (if(rev.lum) rev(lums) else lums) / max(lums) # <= 1
+         for(ang in hues) { # could do all this using outer() instead of for()...
+             a. <- ang * pi/180
+             z.a <- exp(1i * a.)
+             cols <- hcl(ang, c = chroma[i.c], l = lums, fixup = fixup)
+             points(l.s * z.a, pch = 16, col = cols, cex = p.cex)
+             ##if(do."text") : draw the 0,45,90,... angle "lines"
+             if(do.label)
+                 text(z.a*1.05, labels = ang, col = cols[length(cols)/2],
+                      srt = ang)
+         }
+         if(!fixup) ## show the outline
+             lines(exp(1i * hues * pi/180))
+    }
+    invisible()
+ }

> ## and now a few interesting calls :
> 
> hcl.wheel() # and watch it redraw when you fiddle with the graphic window

> hcl.wheel(rev.lum= TRUE) # ditto

> hcl.wheel(do.label = TRUE) # ditto

> ## Now watch:
> hcl.wheel(chroma = c(25,35,45,55))

> hcl.wheel(chroma = seq(10, 90, by = 10), p.cex = 0.4)

> hcl.wheel(chroma = seq(10, 90, by = 10), p.cex = 0.3, fixup = FALSE)

> hcl.wheel(chroma = seq(10, 90, by = 10), p.cex = 0.3, rev.lum = TRUE)

> if(dev.interactive()) # new "graphics window" -- to compare with previous :
+     dev.new()

> hcl.wheel(chroma = seq(10, 90, by = 10), p.cex = 0.3, rev.lum = TRUE, fixup=FALSE)
> 
> 
> 
> 
> cleanEx()
> nameEx("hsv")
> ### * hsv
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: hsv
> ### Title: HSV Color Specification
> ### Aliases: hsv
> ### Keywords: color dplot
> 
> ### ** Examples
> 
> require(graphics)
> 
> hsv(.5,.5,.5)
[1] "#408080"
> 
> ## Red tones:
> n <- 20;  y <- -sin(3*pi*((1:n)-1/2)/n)
> op <- par(mar = rep(1.5, 4))
> plot(y, axes = FALSE, frame.plot = TRUE,
+      xlab = "", ylab = "", pch = 21, cex = 30,
+      bg = rainbow(n, start = .85, end = .1),
+      main = "Red tones")
> par(op)
> 
> 
> 
> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
> cleanEx()
> nameEx("make.rgb")
> ### * make.rgb
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: make.rgb
> ### Title: Create colour spaces
> ### Aliases: make.rgb colorConverter
> ### Keywords: color
> 
> ### ** Examples
> 
> (pal <- make.rgb(red =   c(0.6400, 0.3300),
+                  green = c(0.2900, 0.6000),
+                  blue =  c(0.1500, 0.0600),
+                  name = "PAL/SECAM RGB"))
Color space converter: PAL/SECAM RGB
Reference white: D65
display gamma = 2.2
> 
> ## converter for sRGB in #rrggbb format
> hexcolor <- colorConverter(toXYZ = function(hex, ...) {
+                             rgb <- t(col2rgb(hex))/255
+                             colorspaces$sRGB$toXYZ(rgb, ...) },
+                            fromXYZ = function(xyz, ...) {
+                               rgb <- colorspaces$sRGB$fromXYZ(xyz, ...)
+                               rgb <- round(rgb, 5)
+                               if (min(rgb) < 0 || max(rgb) > 1)
+                                    as.character(NA)
+                               else rgb(rgb[1], rgb[2], rgb[3])},
+                            white = "D65", name = "#rrggbb")
> 
> (cols <- t(col2rgb(palette())))
     red green blue
[1,]   0     0    0
[2,] 223    83  107
[3,]  97   208   79
[4,]  34   151  230
[5,]  40   226  229
[6,] 205    11  188
[7,] 245   199   16
[8,] 158   158  158
> zapsmall(luv <- convertColor(cols, from = "sRGB", to = "Luv", scale.in = 255))
            L         u         v
[1,]  0.00000   0.00000   0.00000
[2,] 55.16051  99.94871   8.95299
[3,] 74.89688 -51.95694  73.49647
[4,] 59.98342 -36.43653 -76.74275
[5,] 82.01645 -61.64283 -15.85619
[6,] 48.23048  74.70628 -73.95136
[7,] 82.05072  40.07525  84.92489
[8,] 65.11425   0.00000   0.00000
> (hex <- convertColor(luv, from = "Luv",  to = hexcolor, scale.out = NULL))
     [,1]     
[1,] "#000000"
[2,] "#DF536B"
[3,] "#61D04F"
[4,] "#2297E6"
[5,] "#28E2E5"
[6,] "#CD0BBC"
[7,] "#F5C710"
[8,] "#9E9E9E"
> 
> ## must make hex a matrix before using it
> (cc <- round(convertColor(as.matrix(hex), from = hexcolor, to = "sRGB",
+                           scale.in = NULL, scale.out = 255)))
     [,1] [,2] [,3]
[1,]    0    0    0
[2,]  223   83  107
[3,]   97  208   79
[4,]   34  151  230
[5,]   40  226  229
[6,]  205   11  188
[7,]  245  199   16
[8,]  158  158  158
> stopifnot(cc == cols)
> 
> ## Internally vectorized version of hexcolor, notice the use
> ## of `vectorized = TRUE`:
> 
> hexcolorv <- colorConverter(toXYZ = function(hex, ...) {
+                             rgb <- t(col2rgb(hex))/255
+                             colorspaces$sRGB$toXYZ(rgb, ...) },
+                            fromXYZ = function(xyz, ...) {
+                               rgb <- colorspaces$sRGB$fromXYZ(xyz, ...)
+                               rgb <- round(rgb, 5)
+                               oob <- pmin(rgb[,1],rgb[,2],rgb[,3]) < 0 |
+                                      pmax(rgb[,1],rgb[,2],rgb[,3]) > 0
+                               res <- rep(NA_character_, nrow(rgb))
+                               res[!oob] <- rgb(rgb[!oob,,drop=FALSE])},
+                            white = "D65", name = "#rrggbb",
+                            vectorized=TRUE)
> (ccv <- round(convertColor(as.matrix(hex), from = hexcolor, to = "sRGB",
+                            scale.in = NULL, scale.out = 255)))
     [,1] [,2] [,3]
[1,]    0    0    0
[2,]  223   83  107
[3,]   97  208   79
[4,]   34  151  230
[5,]   40  226  229
[6,]  205   11  188
[7,]  245  199   16
[8,]  158  158  158
> stopifnot(ccv == cols)
> 
> 
> 
> 
> cleanEx()
> nameEx("n2mfrow")
> ### * n2mfrow
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: n2mfrow
> ### Title: Compute Default 'mfrow' From Number of Plots
> ### Aliases: n2mfrow
> ### Keywords: dplot utilities
> 
> ### ** Examples
> 
> require(graphics)
> 
> n2mfrow(8) # 3 x 3
[1] 3 3
> 
> n <- 5 ; x <- seq(-2, 2, length.out = 51)
> ## suppose now that 'n' is not known {inside function}
> op <- par(mfrow = n2mfrow(n))
> for (j in 1:n)
+    plot(x, x^j, main = substitute(x^ exp, list(exp = j)), type = "l",
+    col = "blue")
> 
> sapply(1:14, n2mfrow)
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
[1,]    1    2    3    2    3    3    3    3    3     4     4     4     4     4
[2,]    1    1    1    2    2    2    3    3    3     3     3     3     4     4
> sapply(1:14, n2mfrow, asp=16/9)
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
[1,]    1    2    2    2    2    2    2    3    3     3     3     3     3     3
[2,]    1    1    2    2    3    3    4    3    3     4     4     4     5     5
> 
> 
> 
> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
> cleanEx()
> nameEx("nclass")
> ### * nclass
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: nclass
> ### Title: Compute the Number of Classes for a Histogram
> ### Aliases: nclass.Sturges nclass.scott nclass.FD
> ### Keywords: univar
> 
> ### ** Examples
> 
> set.seed(1)
> x <- stats::rnorm(1111)
> nclass.Sturges(x)
[1] 12
> 
> ## Compare them:
> NC <- function(x) c(Sturges = nclass.Sturges(x),
+       Scott = nclass.scott(x), FD = nclass.FD(x))
> NC(x)
Sturges   Scott      FD 
     12      20      26 
> onePt <- rep(1, 11)
> NC(onePt) # no longer gives NaN
Sturges   Scott      FD 
      5       1       1 
> 
> 
> 
> cleanEx()
> nameEx("palette")
> ### * palette
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: palette
> ### Title: Set or View the Graphics Palette
> ### Aliases: palette palette.pals palette.colors
> ### Keywords: color sysdata
> 
> ### ** Examples
> 
> require(graphics)
> 
> palette()               # obtain the current palette
[1] "black"   "#DF536B" "#61D04F" "#2297E6" "#28E2E5" "#CD0BBC" "#F5C710"
[8] "gray62" 
> palette("R3");palette() # old default palette
[1] "black"   "red"     "green3"  "blue"    "cyan"    "magenta" "yellow" 
[8] "gray"   
> palette("ggplot2")      # ggplot2-style palette
> palette()
[1] "black"   "#F8766D" "#00BA38" "#619CFF" "#00BFC4" "#F564E3" "#B79F00"
[8] "gray62" 
> 
> palette(hcl.colors(8, "viridis"))
> 
> (palette(gray(seq(0,.9,length.out = 25)))) # gray scales; print old palette
[1] "#4B0055" "#3C3777" "#006290" "#008A98" "#00AC8E" "#25C771" "#A6DA42"
[8] "#FDE333"
> matplot(outer(1:100, 1:30), type = "l", lty = 1,lwd = 2, col = 1:30,
+         main = "Gray Scales Palette",
+         sub = "palette(gray(seq(0, .9, len=25)))")
> palette("default")      # reset back to the default
> 
> ## on a device where alpha transparency is supported,
> ##  use 'alpha = 0.3' transparency with the default palette :
> mycols <- adjustcolor(palette(), alpha.f = 0.3)
> opal <- palette(mycols)
> x <- rnorm(1000); xy <- cbind(x, 3*x + rnorm(1000))
> plot (xy, lwd = 2,
+        main = "Alpha-Transparency Palette\n alpha = 0.3")
> xy[,1] <- -xy[,1]
> points(xy, col = 8, pch = 16, cex = 1.5)
> palette("default")
> 
> ## List available built-in palettes
> palette.pals()
 [1] "R3"              "R4"              "ggplot2"         "Okabe-Ito"      
 [5] "Accent"          "Dark 2"          "Paired"          "Pastel 1"       
 [9] "Pastel 2"        "Set 1"           "Set 2"           "Set 3"          
[13] "Tableau 10"      "Classic Tableau" "Polychrome 36"   "Alphabet"       
> 
> ## Demonstrate the colors 1:8 in different palettes using a custom matplot()
> sinplot <- function(main=NULL) {
+     x <- outer(
+ 	seq(-pi, pi, length.out = 50),
+ 	seq(0, pi, length.out = 8),
+ 	function(x, y) sin(x - y)
+     )
+     matplot(x, type = "l", lwd = 4, lty = 1, col = 1:8, ylab = "", main=main)
+ }
> sinplot("default palette")
> 
> palette("R3");        sinplot("R3")
> palette("Okabe-Ito"); sinplot("Okabe-Ito")
> palette("Tableau")  ; sinplot("Tableau")
> palette("default") # reset
> 
> ## color swatches for palette.colors()
> palette.swatch <- function(palette = palette.pals(), n = 8, nrow = 8,
+                            border = "black", cex = 1, ...)
+ {
+      cols <- sapply(palette, palette.colors, n = n, recycle = TRUE)
+      ncol <- ncol(cols)
+      nswatch <- min(ncol, nrow)
+      op <- par(mar = rep(0.1, 4),
+                mfrow = c(1, min(5, ceiling(ncol/nrow))),
+      	       cex = cex, ...)
+      on.exit(par(op))
+      while (length(palette)) {
+  	subset <- seq_len(min(nrow, ncol(cols)))
+  	plot.new()
+  	plot.window(c(0, n), c(0.25, nrow + 0.25))
+  	y <- rev(subset)
+  	text(0, y + 0.1, palette[subset], adj = c(0, 0))
+  	y <- rep(y, each = n)
+  	rect(rep(0:(n-1), n), y, rep(1:n, n), y - 0.5,
+  	     col = cols[, subset], border = border)
+  	palette <- palette[-subset]
+  	cols    <- cols [, -subset, drop = FALSE]
+      }
+ }
> 
> palette.swatch()
> 
> palette.swatch(n = 26) # show full "Alphabet"; recycle most others
> 
> 
> 
> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
> cleanEx()
> nameEx("palettes")
> ### * palettes
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: Palettes
> ### Title: Color Palettes
> ### Aliases: rainbow heat.colors terrain.colors topo.colors cm.colors
> ###   hcl.colors hcl.pals
> ### Keywords: color dplot
> 
> ### ** Examples
> 
> require("graphics")
> 
> # color wheels in RGB/HSV and HCL space
> par(mfrow = c(2, 2))
> pie(rep(1, 12), col = rainbow(12), main = "RGB/HSV")
> pie(rep(1, 12), col = hcl.colors(12, "Set 2"), main = "HCL")
> par(mfrow = c(1, 1))
> 
> ## color swatches for RGB/HSV palettes
> demo.pal <-
+   function(n, border = if (n < 32) "light gray" else NA,
+            main = paste("color palettes;  n=", n),
+            ch.col = c("rainbow(n, start=.7, end=.1)", "heat.colors(n)",
+                       "terrain.colors(n)", "topo.colors(n)",
+                       "cm.colors(n)"))
+ {
+     nt <- length(ch.col)
+     i <- 1:n; j <- n / nt; d <- j/6; dy <- 2*d
+     plot(i, i+d, type = "n", yaxt = "n", ylab = "", main = main)
+     for (k in 1:nt) {
+         rect(i-.5, (k-1)*j+ dy, i+.4, k*j,
+              col = eval(str2lang(ch.col[k])), border = border)
+         text(2*j,  k * j + dy/4, ch.col[k])
+     }
+ }
> demo.pal(16)
> 
> ## color swatches for HCL palettes
> hcl.swatch <- function(type = NULL, n = 5, nrow = 11,
+   border = if (n < 15) "black" else NA) {
+     palette <- hcl.pals(type)
+     cols <- sapply(palette, hcl.colors, n = n)
+     ncol <- ncol(cols)
+     nswatch <- min(ncol, nrow)
+ 
+     par(mar = rep(0.1, 4),
+         mfrow = c(1, min(5, ceiling(ncol/nrow))),
+         pin = c(1, 0.5 * nswatch),
+         cex = 0.7)
+ 
+     while (length(palette)) {
+         subset <- 1:min(nrow, ncol(cols))
+         plot.new()
+         plot.window(c(0, n), c(0, nrow + 1))
+         text(0, rev(subset) + 0.1, palette[subset], adj = c(0, 0))
+         y <- rep(subset, each = n)
+         rect(rep(0:(n-1), n), rev(y), rep(1:n, n), rev(y) - 0.5,
+              col = cols[, subset], border = border)
+         palette <- palette[-subset]
+         cols <- cols[, -subset, drop = FALSE]
+     }
+ 
+     par(mfrow = c(1, 1), mar = c(5.1, 4.1, 4.1, 2.1), cex = 1)
+ }
> hcl.swatch()
> hcl.swatch("qualitative")
> hcl.swatch("sequential")
> hcl.swatch("diverging")
> hcl.swatch("divergingx")
> 
> ## heat maps with sequential HCL palette (purple)
> image(volcano, col = hcl.colors(11, "purples", rev = TRUE))
> filled.contour(volcano, nlevels = 10,
+                color.palette = function(n, ...)
+                    hcl.colors(n, "purples", rev = TRUE, ...))
> 
> ## list available HCL color palettes
> hcl.pals("qualitative")
[1] "Pastel 1" "Dark 2"   "Dark 3"   "Set 2"    "Set 3"    "Warm"     "Cold"    
[8] "Harmonic" "Dynamic" 
> hcl.pals("sequential")
 [1] "Grays"         "Light Grays"   "Blues 2"       "Blues 3"      
 [5] "Purples 2"     "Purples 3"     "Reds 2"        "Reds 3"       
 [9] "Greens 2"      "Greens 3"      "Oslo"          "Purple-Blue"  
[13] "Red-Purple"    "Red-Blue"      "Purple-Orange" "Purple-Yellow"
[17] "Blue-Yellow"   "Green-Yellow"  "Red-Yellow"    "Heat"         
[21] "Heat 2"        "Terrain"       "Terrain 2"     "Viridis"      
[25] "Plasma"        "Inferno"       "Rocket"        "Mako"         
[29] "Dark Mint"     "Mint"          "BluGrn"        "Teal"         
[33] "TealGrn"       "Emrld"         "BluYl"         "ag_GrnYl"     
[37] "Peach"         "PinkYl"        "Burg"          "BurgYl"       
[41] "RedOr"         "OrYel"         "Purp"          "PurpOr"       
[45] "Sunset"        "Magenta"       "SunsetDark"    "ag_Sunset"    
[49] "BrwnYl"        "YlOrRd"        "YlOrBr"        "OrRd"         
[53] "Oranges"       "YlGn"          "YlGnBu"        "Reds"         
[57] "RdPu"          "PuRd"          "Purples"       "PuBuGn"       
[61] "PuBu"          "Greens"        "BuGn"          "GnBu"         
[65] "BuPu"          "Blues"         "Lajolla"       "Turku"        
[69] "Hawaii"        "Batlow"       
> hcl.pals("diverging")
 [1] "Blue-Red"      "Blue-Red 2"    "Blue-Red 3"    "Red-Green"    
 [5] "Purple-Green"  "Purple-Brown"  "Green-Brown"   "Blue-Yellow 2"
 [9] "Blue-Yellow 3" "Green-Orange"  "Cyan-Magenta"  "Tropic"       
[13] "Broc"          "Cork"          "Vik"           "Berlin"       
[17] "Lisbon"        "Tofino"       
> hcl.pals("divergingx")
 [1] "ArmyRose" "Earth"    "Fall"     "Geyser"   "TealRose" "Temps"   
 [7] "PuOr"     "RdBu"     "RdGy"     "PiYG"     "PRGn"     "BrBG"    
[13] "RdYlBu"   "RdYlGn"   "Spectral" "Zissou 1" "Cividis"  "Roma"    
> 
> 
> 
> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
> cleanEx()
> nameEx("pdf")
> ### * pdf
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: pdf
> ### Title: PDF Graphics Device
> ### Aliases: pdf
> ### Keywords: device
> 
> ### ** Examples
> 
> 
> 
> cleanEx()
> nameEx("pdf.options")
> ### * pdf.options
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: pdf.options
> ### Title: Auxiliary Function to Set/View Defaults for Arguments of pdf
> ### Aliases: pdf.options
> ### Keywords: device
> 
> ### ** Examples
> 
> pdf.options(bg = "pink")
> utils::str(pdf.options())
List of 18
 $ width      : num 7
 $ height     : num 7
 $ onefile    : logi TRUE
 $ family     : chr "Helvetica"
 $ title      : chr "R Graphics Output"
 $ fonts      : NULL
 $ version    : chr "1.4"
 $ paper      : chr "special"
 $ encoding   : chr "default"
 $ bg         : chr "pink"
 $ fg         : chr "black"
 $ pointsize  : num 12
 $ pagecentre : logi TRUE
 $ colormodel : chr "srgb"
 $ useDingbats: logi FALSE
 $ useKerning : logi TRUE
 $ fillOddEven: logi FALSE
 $ compress   : logi TRUE
> pdf.options(reset = TRUE) # back to factory-fresh
> 
> 
> 
> cleanEx()
> nameEx("pictex")
> ### * pictex
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: pictex
> ### Title: A PicTeX Graphics Driver
> ### Aliases: pictex
> ### Keywords: device
> 
> ### ** Examples
> 
> require(graphics)
> ## Don't show: 
> oldwd <- setwd(tempdir())
> ## End(Don't show)
> 
> pictex()
> plot(1:11, (-5:5)^2, type = "b", main = "Simple Example Plot")
> dev.off()
pdf 
  2 
> ##--------------------
> ## Not run: 
> ##D %% LaTeX Example
> ##D \documentclass{article}
> ##D \usepackage{pictex}
> ##D \usepackage{graphics} % for \rotatebox
> ##D \begin{document}
> ##D %...
> ##D \begin{figure}[h]
> ##D   \centerline{\input{Rplots.tex}}
> ##D   \caption{}
> ##D \end{figure}
> ##D %...
> ##D \end{document}
> ## End(Not run)
> ##--------------------
> unlink("Rplots.tex")
> ## Don't show: 
> setwd(oldwd)
> ## End(Don't show)
> 
> 
> 
> cleanEx()
> nameEx("plotmath")
> ### * plotmath
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: plotmath
> ### Title: Mathematical Annotation in R
> ### Aliases: plotmath symbol plain bold italic bolditalic hat bar dot ring
> ###   widehat widetilde displaystyle textstyle scriptstyle
> ###   scriptscriptstyle underline phantom over frac atop integral inf sup
> ###   group bgroup
> ### Keywords: aplot
> 
> ### ** Examples
> 
> require(graphics)
> 
> x <- seq(-4, 4, length.out = 101)
> y <- cbind(sin(x), cos(x))
> matplot(x, y, type = "l", xaxt = "n",
+         main = expression(paste(plain(sin) * phi, "  and  ",
+                                 plain(cos) * phi)),
+         ylab = expression("sin" * phi, "cos" * phi), # only 1st is taken
+         xlab = expression(paste("Phase Angle ", phi)),
+         col.main = "blue")
> axis(1, at = c(-pi, -pi/2, 0, pi/2, pi),
+      labels = expression(-pi, -pi/2, 0, pi/2, pi))
> 
> 
> ## How to combine "math" and numeric variables :
> plot(1:10, type="n", xlab="", ylab="", main = "plot math & numbers")
> theta <- 1.23 ; mtext(bquote(hat(theta) == .(theta)), line= .25)
> for(i in 2:9)
+     text(i, i+1, substitute(list(xi, eta) == group("(",list(x,y),")"),
+                             list(x = i, y = i+1)))
> ## note that both of these use calls rather than expressions.
> ##
> text(1, 10,  "Derivatives:", adj = 0)
> text(1, 9.6, expression(
+  "             first: {f * minute}(x) " == {f * minute}(x)), adj = 0)
> text(1, 9.0, expression(
+  "     second: {f * second}(x) "        == {f * second}(x)), adj = 0)
> 
> 
> plot(1:10, 1:10)
> text(4, 9, expression(hat(beta) == (X^t * X)^{-1} * X^t * y))
> text(4, 8.4, "expression(hat(beta) == (X^t * X)^{-1} * X^t * y)",
+      cex = .8)
> text(4, 7, expression(bar(x) == sum(frac(x[i], n), i==1, n)))
> text(4, 6.4, "expression(bar(x) == sum(frac(x[i], n), i==1, n))",
+      cex = .8)
> text(8, 5, expression(paste(frac(1, sigma*sqrt(2*pi)), " ",
+                             plain(e)^{frac(-(x-mu)^2, 2*sigma^2)})),
+      cex = 1.2)
> 
> ## some other useful symbols
> plot.new(); plot.window(c(0,4), c(15,1))
> text(1, 1, "universal", adj = 0); text(2.5, 1,  "\\042")
> text(3, 1, expression(symbol("\042")))
> text(1, 2, "existential", adj = 0); text(2.5, 2,  "\\044")
> text(3, 2, expression(symbol("\044")))
> text(1, 3, "suchthat", adj = 0); text(2.5, 3,  "\\047")
> text(3, 3, expression(symbol("\047")))
> text(1, 4, "therefore", adj = 0); text(2.5, 4,  "\\134")
> text(3, 4, expression(symbol("\134")))
> text(1, 5, "perpendicular", adj = 0); text(2.5, 5,  "\\136")
> text(3, 5, expression(symbol("\136")))
> text(1, 6, "circlemultiply", adj = 0); text(2.5, 6,  "\\304")
> text(3, 6, expression(symbol("\304")))
> text(1, 7, "circleplus", adj = 0); text(2.5, 7,  "\\305")
> text(3, 7, expression(symbol("\305")))
> text(1, 8, "emptyset", adj = 0); text(2.5, 8,  "\\306")
> text(3, 8, expression(symbol("\306")))
> text(1, 9, "angle", adj = 0); text(2.5, 9,  "\\320")
> text(3, 9, expression(symbol("\320")))
> text(1, 10, "leftangle", adj = 0); text(2.5, 10,  "\\341")
> text(3, 10, expression(symbol("\341")))
> text(1, 11, "rightangle", adj = 0); text(2.5, 11,  "\\361")
> text(3, 11, expression(symbol("\361")))
> 
> 
> 
> cleanEx()
> nameEx("postscriptFonts")
> ### * postscriptFonts
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: postscriptFonts
> ### Title: PostScript and PDF Font Families
> ### Aliases: postscriptFonts pdfFonts
> ### Keywords: device
> 
> ### ** Examples
> 
> postscriptFonts()
$serif
$family
[1] "Times"

$metrics
[1] "Times-Roman.afm"      "Times-Bold.afm"       "Times-Italic.afm"    
[4] "Times-BoldItalic.afm" "Symbol.afm"          

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$sans
$family
[1] "Helvetica"

$metrics
[1] "Helvetica.afm"             "Helvetica-Bold.afm"       
[3] "Helvetica-Oblique.afm"     "Helvetica-BoldOblique.afm"
[5] "Symbol.afm"               

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$mono
$family
[1] "Courier"

$metrics
[1] "Courier.afm"             "Courier-Bold.afm"       
[3] "Courier-Oblique.afm"     "Courier-BoldOblique.afm"
[5] "Symbol.afm"             

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$AvantGarde
$family
[1] "AvantGarde"

$metrics
[1] "agw_____.afm" "agd_____.afm" "agwo____.afm" "agdo____.afm" "Symbol.afm"  

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$Bookman
$family
[1] "Bookman"

$metrics
[1] "bkl_____.afm" "bkd_____.afm" "bkli____.afm" "bkdi____.afm" "Symbol.afm"  

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$Courier
$family
[1] "Courier"

$metrics
[1] "Courier.afm"             "Courier-Bold.afm"       
[3] "Courier-Oblique.afm"     "Courier-BoldOblique.afm"
[5] "Symbol.afm"             

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$Helvetica
$family
[1] "Helvetica"

$metrics
[1] "Helvetica.afm"             "Helvetica-Bold.afm"       
[3] "Helvetica-Oblique.afm"     "Helvetica-BoldOblique.afm"
[5] "Symbol.afm"               

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$`Helvetica-Narrow`
$family
[1] "Helvetica-Narrow"

$metrics
[1] "hvn_____.afm" "hvnb____.afm" "hvno____.afm" "hvnbo___.afm" "Symbol.afm"  

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$NewCenturySchoolbook
$family
[1] "NewCenturySchoolbook"

$metrics
[1] "ncr_____.afm" "ncb_____.afm" "nci_____.afm" "ncbi____.afm" "Symbol.afm"  

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$Palatino
$family
[1] "Palatino"

$metrics
[1] "por_____.afm" "pob_____.afm" "poi_____.afm" "pobi____.afm" "Symbol.afm"  

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$Times
$family
[1] "Times"

$metrics
[1] "Times-Roman.afm"      "Times-Bold.afm"       "Times-Italic.afm"    
[4] "Times-BoldItalic.afm" "Symbol.afm"          

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$URWGothic
$family
[1] "URWGothic"

$metrics
[1] "a010013l.afm" "a010015l.afm" "a010033l.afm" "a010035l.afm" "s050000l.afm"

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$URWBookman
$family
[1] "URWBookman"

$metrics
[1] "b018012l.afm" "b018015l.afm" "b018032l.afm" "b018035l.afm" "s050000l.afm"

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$NimbusMon
$family
[1] "NimbusMon"

$metrics
[1] "n022003l.afm" "n022004l.afm" "n022023l.afm" "n022024l.afm" "s050000l.afm"

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$NimbusSan
$family
[1] "NimbusSan"

$metrics
[1] "n019003l.afm" "n019004l.afm" "n019023l.afm" "n019024l.afm" "s050000l.afm"

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$URWHelvetica
$family
[1] "URWHelvetica"

$metrics
[1] "n019003l.afm" "n019004l.afm" "n019023l.afm" "n019024l.afm" "s050000l.afm"

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$NimbusSanCond
$family
[1] "NimbusSanCond"

$metrics
[1] "n019043l.afm" "n019044l.afm" "n019063l.afm" "n019064l.afm" "s050000l.afm"

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$CenturySch
$family
[1] "CenturySch"

$metrics
[1] "c059013l.afm" "c059016l.afm" "c059033l.afm" "c059036l.afm" "s050000l.afm"

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$URWPalladio
$family
[1] "URWPalladio"

$metrics
[1] "p052003l.afm" "p052004l.afm" "p052023l.afm" "p052024l.afm" "s050000l.afm"

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$NimbusRom
$family
[1] "NimbusRom"

$metrics
[1] "n021003l.afm" "n021004l.afm" "n021023l.afm" "n021024l.afm" "s050000l.afm"

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$URWTimes
$family
[1] "URWTimes"

$metrics
[1] "n021003l.afm" "n021004l.afm" "n021023l.afm" "n021024l.afm" "s050000l.afm"

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$ArialMT
$family
[1] "ArialMT"

$metrics
[1] "ArialMT.afm"            "ArialMT-Bold.afm"       "ArialMT-Italic.afm"    
[4] "ArialMT-BoldItalic.afm" "Symbol.afm"            

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

$ComputerModern
$family
[1] "ComputerModern"

$metrics
[1] "CM_regular_10.afm"      "CM_boldx_10.afm"        "CM_italic_10.afm"      
[4] "CM_boldx_italic_10.afm" "CM_symbol_10.afm"      

$encoding
[1] "TeXtext.enc"

attr(,"class")
[1] "Type1Font"

$ComputerModernItalic
$family
[1] "ComputerModernItalic"

$metrics
[1] "CM_regular_10.afm" "CM_boldx_10.afm"   "cmti10.afm"       
[4] "cmbxti10.afm"      "CM_symbol_10.afm" 

$encoding
[1] "TeXtext.enc"

attr(,"class")
[1] "Type1Font"

$Japan1
$family
[1] "HeiseiKakuGo-W5"

$metrics
[1] ""           ""           ""           ""           "Symbol.afm"

$cmap
[1] "EUC-H"

$cmapEncoding
[1] "EUC-JP"

$pdfresource
[1] ""

attr(,"class")
[1] "CIDFont"

$Japan1HeiMin
$family
[1] "HeiseiMin-W3"

$metrics
[1] ""           ""           ""           ""           "Symbol.afm"

$cmap
[1] "EUC-H"

$cmapEncoding
[1] "EUC-JP"

$pdfresource
[1] ""

attr(,"class")
[1] "CIDFont"

$Japan1GothicBBB
$family
[1] "GothicBBB-Medium"

$metrics
[1] ""           ""           ""           ""           "Symbol.afm"

$cmap
[1] "EUC-H"

$cmapEncoding
[1] "EUC-JP"

$pdfresource
[1] ""

attr(,"class")
[1] "CIDFont"

$Japan1Ryumin
$family
[1] "Ryumin-Light"

$metrics
[1] ""           ""           ""           ""           "Symbol.afm"

$cmap
[1] "EUC-H"

$cmapEncoding
[1] "EUC-JP"

$pdfresource
[1] ""

attr(,"class")
[1] "CIDFont"

$Korea1
$family
[1] "Baekmuk-Batang"

$metrics
[1] ""           ""           ""           ""           "Symbol.afm"

$cmap
[1] "KSCms-UHC-H"

$cmapEncoding
[1] "CP949"

$pdfresource
[1] ""

attr(,"class")
[1] "CIDFont"

$Korea1deb
$family
[1] "Batang-Regular"

$metrics
[1] ""           ""           ""           ""           "Symbol.afm"

$cmap
[1] "KSCms-UHC-H"

$cmapEncoding
[1] "CP949"

$pdfresource
[1] ""

attr(,"class")
[1] "CIDFont"

$CNS1
$family
[1] "MOESung-Regular"

$metrics
[1] ""           ""           ""           ""           "Symbol.afm"

$cmap
[1] "B5pc-H"

$cmapEncoding
[1] "CP950"

$pdfresource
[1] ""

attr(,"class")
[1] "CIDFont"

$GB1
$family
[1] "BousungEG-Light-GB"

$metrics
[1] ""           ""           ""           ""           "Symbol.afm"

$cmap
[1] "GBK-EUC-H"

$cmapEncoding
[1] "GBK"

$pdfresource
[1] ""

attr(,"class")
[1] "CIDFont"

> ## This duplicates "ComputerModernItalic".
> CMitalic <- Type1Font("ComputerModern2",
+                       c("CM_regular_10.afm", "CM_boldx_10.afm",
+                         "cmti10.afm", "cmbxti10.afm",
+                          "CM_symbol_10.afm"),
+                       encoding = "TeXtext.enc")
> postscriptFonts(CMitalic = CMitalic)
> 
> ## A CID font for Japanese using a different CMap and
> ## corresponding cmapEncoding.
> `Jp_UCS-2` <- CIDFont("TestUCS2",
+                   c("Adobe-Japan1-UniJIS-UCS2-H.afm",
+                     "Adobe-Japan1-UniJIS-UCS2-H.afm",
+                     "Adobe-Japan1-UniJIS-UCS2-H.afm",
+                     "Adobe-Japan1-UniJIS-UCS2-H.afm"),
+                   "UniJIS-UCS2-H", "UCS-2")
> pdfFonts(`Jp_UCS-2` = `Jp_UCS-2`)
> names(pdfFonts())
 [1] "serif"                "sans"                 "mono"                
 [4] "AvantGarde"           "Bookman"              "Courier"             
 [7] "Helvetica"            "Helvetica-Narrow"     "NewCenturySchoolbook"
[10] "Palatino"             "Times"                "URWGothic"           
[13] "URWBookman"           "NimbusMon"            "NimbusSan"           
[16] "URWHelvetica"         "NimbusSanCond"        "CenturySch"          
[19] "URWPalladio"          "NimbusRom"            "URWTimes"            
[22] "ArialMT"              "Japan1"               "Japan1HeiMin"        
[25] "Japan1GothicBBB"      "Japan1Ryumin"         "Korea1"              
[28] "Korea1deb"            "CNS1"                 "GB1"                 
[31] "Jp_UCS-2"            
> 
> 
> 
> cleanEx()
> nameEx("pretty.Date")
> ### * pretty.Date
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: pretty.Date
> ### Title: Pretty Breakpoints for Date-Time Classes
> ### Aliases: pretty.Date pretty.POSIXt
> ### Keywords: dplot
> 
> ### ** Examples
> 
> ## time-dependent ==> ignore diffs:
> ## IGNORE_RDIFF_BEGIN
> pretty(Sys.Date())
[1] "2022-03-17" "2022-03-18" "2022-03-19" "2022-03-20" "2022-03-21"
[6] "2022-03-22"
> pretty(Sys.time(), n = 10)
 [1] "2022-03-19 21:26:43 GMT" "2022-03-19 21:26:44 GMT"
 [3] "2022-03-19 21:26:45 GMT" "2022-03-19 21:26:46 GMT"
 [5] "2022-03-19 21:26:47 GMT" "2022-03-19 21:26:48 GMT"
 [7] "2022-03-19 21:26:49 GMT" "2022-03-19 21:26:50 GMT"
 [9] "2022-03-19 21:26:51 GMT" "2022-03-19 21:26:52 GMT"
[11] "2022-03-19 21:26:53 GMT"
> ## IGNORE_RDIFF_END
> 
> pretty(as.Date("2000-03-01")) # R 1.0.0 came in a leap year
[1] "2000-02-28" "2000-02-29" "2000-03-01" "2000-03-02" "2000-03-03"
[6] "2000-03-04"
> 
> ## time ranges in diverse scales:% also in ../../../../tests/reg-tests-1c.R
> require(stats)
> steps <- setNames(,
+     c("10 secs", "1 min", "5 mins", "30 mins", "6 hours", "12 hours",
+       "1 DSTday", "2 weeks", "1 month", "6 months", "1 year",
+       "10 years", "50 years", "1000 years"))
> x <- as.POSIXct("2002-02-02 02:02")
> lapply(steps,
+        function(s) {
+            at <- pretty(seq(x, by = s, length.out = 2), n = 5)
+            attr(at, "labels")
+        })
$`10 secs`
[1] "00" "02" "04" "06" "08" "10"

$`1 min`
[1] "00" "10" "20" "30" "40" "50" "00"

$`5 mins`
[1] "02:02" "02:03" "02:04" "02:05" "02:06" "02:07"

$`30 mins`
[1] "02:00" "02:10" "02:20" "02:30" "02:40"

$`6 hours`
[1] "02:00" "03:00" "04:00" "05:00" "06:00" "07:00" "08:00" "09:00"

$`12 hours`
[1] "00:00" "03:00" "06:00" "09:00" "12:00" "15:00"

$`1 DSTday`
[1] "Feb 02 00:00" "Feb 02 06:00" "Feb 02 12:00" "Feb 02 18:00" "Feb 03 00:00"
[6] "Feb 03 06:00"

$`2 weeks`
[1] "Jan 28" "Feb 04" "Feb 11" "Feb 18"

$`1 month`
[1] "Jan 28" "Feb 04" "Feb 11" "Feb 18" "Feb 25" "Mar 04"

$`6 months`
[1] "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep"

$`1 year`
[1] "Jan" "Apr" "Jul" "Oct" "Jan" "Apr"

$`10 years`
[1] "2002" "2004" "2006" "2008" "2010" "2012" "2014"

$`50 years`
[1] "2000" "2010" "2020" "2030" "2040" "2050" "2060"

$`1000 years`
[1] "2000" "2200" "2400" "2600" "2800" "3000" "3200"

> 
> 
> 
> cleanEx()
> nameEx("ps.options")
> ### * ps.options
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: ps.options
> ### Title: Auxiliary Function to Set/View Defaults for Arguments of
> ###   postscript
> ### Aliases: ps.options setEPS setPS
> ### Keywords: device
> 
> ### ** Examples
> 
> ps.options(bg = "pink")
> utils::str(ps.options())
List of 18
 $ onefile    : logi TRUE
 $ family     : chr "Helvetica"
 $ title      : chr "R Graphics Output"
 $ fonts      : NULL
 $ encoding   : chr "default"
 $ bg         : chr "pink"
 $ fg         : chr "black"
 $ width      : num 0
 $ height     : num 0
 $ horizontal : logi TRUE
 $ pointsize  : num 12
 $ paper      : chr "default"
 $ pagecentre : logi TRUE
 $ print.it   : logi FALSE
 $ command    : chr "default"
 $ colormodel : chr "srgb"
 $ useKerning : logi TRUE
 $ fillOddEven: logi FALSE
> 
> ### ---- error checking of arguments: ----
> ps.options(width = 0:12, onefile = 0, bg = pi)
Warning: ‘mode(onefile)’ and ‘mode(bg)’ differ between new and previous
	 ==> NOT changing ‘onefile’ & ‘bg’
Warning: ‘length(width)’ differs between new and previous
	 ==> NOT changing ‘width’
> # override the check for 'width', but not 'bg':
> ps.options(width = 0:12, bg = pi, override.check = c(TRUE,FALSE))
Warning: ‘mode(bg)’ differs between new and previous
	 ==> NOT changing ‘bg’
Warning: ‘length(width)’ differs between new and previous
> utils::str(ps.options())
List of 18
 $ onefile    : logi TRUE
 $ family     : chr "Helvetica"
 $ title      : chr "R Graphics Output"
 $ fonts      : NULL
 $ encoding   : chr "default"
 $ bg         : chr "pink"
 $ fg         : chr "black"
 $ width      : int [1:13] 0 1 2 3 4 5 6 7 8 9 ...
 $ height     : num 0
 $ horizontal : logi TRUE
 $ pointsize  : num 12
 $ paper      : chr "default"
 $ pagecentre : logi TRUE
 $ print.it   : logi FALSE
 $ command    : chr "default"
 $ colormodel : chr "srgb"
 $ useKerning : logi TRUE
 $ fillOddEven: logi FALSE
> ps.options(reset = TRUE) # back to factory-fresh
> 
> 
> 
> cleanEx()
> nameEx("quartz")
> ### * quartz
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: quartz
> ### Title: macOS Quartz Device
> ### Aliases: quartz quartz.options quartz.save
> ### Keywords: device
> 
> ### ** Examples
> ## Not run: 
> ##D ## Only on a Mac,
> ##D ## put something like this is your .Rprofile to customize the defaults
> ##D setHook(packageEvent("grDevices", "onLoad"),
> ##D         function(...) grDevices::quartz.options(width = 8, height = 6,
> ##D                                                 pointsize = 10))
> ## End(Not run)
> 
> 
> cleanEx()
> nameEx("quartzFonts")
> ### * quartzFonts
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: quartzFonts
> ### Title: Quartz Fonts Setup
> ### Aliases: quartzFont quartzFonts
> ### Keywords: device
> 
> ### ** Examples
> 
> if(.Platform$OS.type == "unix") { # includes Mac
+ 
+  utils::str( quartzFonts() ) # a list(serif = .., sans = .., mono = ..)
+  quartzFonts("mono") # the list(mono = ..) sublist of quartzFonts()
+ ## Not run: 
+ ##D   ## for East Asian locales you can use something like
+ ##D   quartzFonts(sans = quartzFont(rep("AppleGothic", 4)),
+ ##D 	      serif = quartzFont(rep("AppleMyungjp", 4)))
+ ##D   ## since the default fonts may well not have the glyphs needed
+ ## End(Not run)
+ }
List of 3
 $ serif: chr [1:4] "Times-Roman" "Times-Bold" "Times-Italic" "Times-BoldItalic"
 $ sans : chr [1:4] "Helvetica" "Helvetica-Bold" "Helvetica-Oblique" "Helvetica-BoldOblique"
 $ mono : chr [1:4] "Courier" "Courier-Bold" "Courier-Oblique" "Courier-BoldOblique"
$mono
[1] "Courier"             "Courier-Bold"        "Courier-Oblique"    
[4] "Courier-BoldOblique"

> 
> 
> 
> cleanEx()
> nameEx("recordGraphics")
> ### * recordGraphics
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: recordGraphics
> ### Title: Record Graphics Operations
> ### Aliases: recordGraphics
> ### Keywords: device
> 
> ### ** Examples
> 
> require(graphics)
> 
> plot(1:10)
> # This rectangle remains 1inch wide when the device is resized
> recordGraphics(
+   {
+     rect(4, 2,
+          4 + diff(par("usr")[1:2])/par("pin")[1], 3)
+   },
+   list(),
+   getNamespace("graphics"))
> 
> 
> 
> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
> cleanEx()
> nameEx("rgb")
> ### * rgb
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: rgb
> ### Title: RGB Color Specification
> ### Aliases: rgb
> ### Keywords: color
> 
> ### ** Examples
> 
> rgb(0, 1, 0)
[1] "#00FF00"
> 
> rgb((0:15)/15, green = 0, blue = 0, names = paste("red", 0:15, sep = "."))
    red.0     red.1     red.2     red.3     red.4     red.5     red.6     red.7 
"#000000" "#110000" "#220000" "#330000" "#440000" "#550000" "#660000" "#770000" 
    red.8     red.9    red.10    red.11    red.12    red.13    red.14    red.15 
"#880000" "#990000" "#AA0000" "#BB0000" "#CC0000" "#DD0000" "#EE0000" "#FF0000" 
> 
> rgb(0, 0:12, 0, maxColorValue = 255) # integer input
 [1] "#000000" "#000100" "#000200" "#000300" "#000400" "#000500" "#000600"
 [8] "#000700" "#000800" "#000900" "#000A00" "#000B00" "#000C00"
> 
> ramp <- colorRamp(c("red", "white"))
> rgb( ramp(seq(0, 1, length.out = 5)), maxColorValue = 255)
[1] "#FF0000" "#FF3F3F" "#FF7F7F" "#FFBFBF" "#FFFFFF"
> 
> 
> 
> cleanEx()
> nameEx("rgb2hsv")
> ### * rgb2hsv
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: rgb2hsv
> ### Title: RGB to HSV Conversion
> ### Aliases: rgb2hsv
> ### Keywords: color dplot
> 
> ### ** Examples
> 
> ## These (saturated, bright ones) only differ by hue
> (rc <- col2rgb(c("red", "yellow","green","cyan", "blue", "magenta")))
      [,1] [,2] [,3] [,4] [,5] [,6]
red    255  255    0    0    0  255
green    0  255  255  255    0    0
blue     0    0    0  255  255  255
> (hc <- rgb2hsv(rc))
  [,1]      [,2]      [,3] [,4]      [,5]      [,6]
h    0 0.1666667 0.3333333  0.5 0.6666667 0.8333333
s    1 1.0000000 1.0000000  1.0 1.0000000 1.0000000
v    1 1.0000000 1.0000000  1.0 1.0000000 1.0000000
> 6 * hc["h",] # the hues are equispaced
[1] 0 1 2 3 4 5
> 
> ## Don't show: 
> set.seed(151)
> ## End(Don't show)
> (rgb3 <- floor(256 * matrix(stats::runif(3*12), 3, 12)))
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
[1,]  122  137  116  244   20  153  191  250  134   117    27   202
[2,]  221  113  210  200  218  151   64  182  195   103   218   254
[3,]  199  157   88   76   39   91   80  146   22   105    17   239
> (hsv3 <- rgb2hsv(rgb3))
       [,1]      [,2]      [,3]      [,4]      [,5]      [,6]      [,7]
h 0.4629630 0.7575758 0.2950820 0.1230159 0.3493266 0.1612903 0.9790026
s 0.4479638 0.2802548 0.5809524 0.6885246 0.9082569 0.4052288 0.6649215
v 0.8666667 0.6156863 0.8235294 0.9568627 0.8549020 0.6000000 0.7490196
        [,8]      [,9]     [,10]     [,11]     [,12]
h 0.05769231 0.2254335 0.9761905 0.3250415 0.4519231
s 0.41600000 0.8871795 0.1196581 0.9220183 0.2047244
v 0.98039216 0.7647059 0.4588235 0.8549020 0.9960784
> ## Consistency :
> stopifnot(rgb3 == col2rgb(hsv(h = hsv3[1,], s = hsv3[2,], v = hsv3[3,])),
+           all.equal(hsv3, rgb2hsv(rgb3/255, maxColorValue = 1)))
> 
> ## A (simplified) pure R version -- originally by Wolfram Fischer --
> ## showing the exact algorithm:
> rgb2hsvR <- function(rgb, gamma = 1, maxColorValue = 255)
+ {
+     if(!is.numeric(rgb)) stop("rgb matrix must be numeric")
+     d <- dim(rgb)
+     if(d[1] != 3) stop("rgb matrix must have 3 rows")
+     n <- d[2]
+     if(n == 0) return(cbind(c(h = 1, s = 1, v = 1))[,0])
+     rgb <- rgb/maxColorValue
+     if(gamma != 1) rgb <- rgb ^ (1/gamma)
+ 
+     ## get the max and min
+     v <- apply( rgb, 2, max)
+     s <- apply( rgb, 2, min)
+     D <- v - s # range
+ 
+     ## set hue to zero for undefined values (gray has no hue)
+     h <- numeric(n)
+     notgray <- ( s != v )
+ 
+     ## blue hue
+     idx <- (v == rgb[3,] & notgray )
+     if (any (idx))
+         h[idx] <- 2/3 + 1/6 * (rgb[1,idx] - rgb[2,idx]) / D[idx]
+     ## green hue
+     idx <- (v == rgb[2,] & notgray )
+     if (any (idx))
+         h[idx] <- 1/3 + 1/6 * (rgb[3,idx] - rgb[1,idx]) / D[idx]
+     ## red hue
+     idx <- (v == rgb[1,] & notgray )
+     if (any (idx))
+         h[idx] <-       1/6 * (rgb[2,idx] - rgb[3,idx]) / D[idx]
+ 
+     ## correct for negative red
+     idx <- (h < 0)
+     h[idx] <- 1+h[idx]
+ 
+     ## set the saturation
+     s[! notgray] <- 0;
+     s[notgray] <- 1 - s[notgray] / v[notgray]
+ 
+     rbind( h = h, s = s, v = v )
+ }
> 
> ## confirm the equivalence:
> all.equal(rgb2hsv (rgb3),
+           rgb2hsvR(rgb3), tolerance = 1e-14) # TRUE
[1] TRUE
> 
> 
> 
> cleanEx()
> nameEx("trans3d")
> ### * trans3d
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: trans3d
> ### Title: 3D to 2D Transformation for Perspective Plots
> ### Aliases: trans3d
> ### Keywords: dplot
> 
> ### ** Examples
> 
> ## See  help(persp) {after attaching the 'graphics' package}
> ##      -----------
> 
> 
> 
> cleanEx()
> nameEx("windows")
> ### * windows
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: windows
> ### Title: Windows Graphics Devices
> ### Aliases: windows win.graph win.metafile win.print print.SavedPlots
> ###   [.SavedPlots
> ### Keywords: device
> 
> ### ** Examples
> ## Not run: 
> ##D ## A series of plots written to a sequence of metafiles
> ##D if(.Platform$OS.type == "windows")
> ##D    win.metafile("Rplot%02d.wmf", pointsize = 10)
> ## End(Not run)
> 
> 
> cleanEx()
> nameEx("windows.options")
> ### * windows.options
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: windows.options
> ### Title: Auxiliary Function to Set/View Defaults for Arguments of
> ###   windows()
> ### Aliases: windows.options
> ### Keywords: device
> 
> ### ** Examples
> ## Not run: 
> ##D ## put something like this is your .Rprofile to customize the defaults
> ##D setHook(packageEvent("grDevices", "onLoad"),
> ##D         function(...)
> ##D             grDevices::windows.options(width = 8, height = 6,
> ##D                                        xpos = 0, pointsize = 10,
> ##D                                        bitmap.aa.win = "cleartype"))
> ## End(Not run)
> 
> 
> cleanEx()
> nameEx("windowsFonts")
> ### * windowsFonts
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: windowsFonts
> ### Title: Windows Fonts
> ### Aliases: windowsFont windowsFonts
> ### Keywords: device
> 
> ### ** Examples
> 
> if(.Platform$OS.type == "windows") withAutoprint({
+   windowsFonts()
+   windowsFonts("mono")
+ })
> ## Not run: 
> ##D ## set up for Japanese: needs the fonts installed
> ##D windows()  # make sure we have the right device type (available on Windows only)
> ##D Sys.setlocale("LC_ALL", "ja")
> ##D windowsFonts(JP1 = windowsFont("MS Mincho"),
> ##D              JP2 = windowsFont("MS Gothic"),
> ##D              JP3 = windowsFont("Arial Unicode MS"))
> ##D plot(1:10)
> ##D text(5, 2, "\u{4E10}\u{4E00}\u{4E01}", family = "JP1")
> ##D text(7, 2, "\u{4E10}\u{4E00}\u{4E01}", family = "JP1", font = 2)
> ##D text(5, 1.5, "\u{4E10}\u{4E00}\u{4E01}", family = "JP2")
> ##D text(9, 2, "\u{5100}", family = "JP3")
> ## End(Not run)
> 
> 
> cleanEx()
> nameEx("x11")
> ### * x11
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: x11
> ### Title: X Window System Graphics (X11)
> ### Aliases: x11 X11 X11.options
> ### Keywords: device
> 
> ### ** Examples
> ## Not run: 
> ##D if(.Platform$OS.type == "unix") { # Only on unix-alikes, possibly Mac,
> ##D ## put something like this is your .Rprofile to customize the defaults
> ##D setHook(packageEvent("grDevices", "onLoad"),
> ##D         function(...) grDevices::X11.options(width = 8, height = 6, xpos = 0,
> ##D                                              pointsize = 10))
> ##D }
> ## End(Not run)
> 
> 
> cleanEx()
> nameEx("x11Fonts")
> ### * x11Fonts
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: X11Fonts
> ### Title: X11 Fonts
> ### Aliases: X11Font X11Fonts
> ### Keywords: device
> 
> ### ** Examples
> 
> ## IGNORE_RDIFF_BEGIN
> if(capabilities()[["X11"]]) withAutoprint({
+ X11Fonts()
+ X11Fonts("mono")
+ utopia <- X11Font("-*-utopia-*-*-*-*-*-*-*-*-*-*-*-*")
+ X11Fonts(utopia = utopia)
+ })
> ## IGNORE_RDIFF_END
> 
> 
> 
> cleanEx()
> nameEx("xy.coords")
> ### * xy.coords
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: xy.coords
> ### Title: Extracting Plotting Structures
> ### Aliases: xy.coords
> ### Keywords: dplot
> 
> ### ** Examples
> 
> ff <- stats::fft(1:9)
> xy.coords(ff)
$x
[1] 45.0 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5

$y
[1]   0.0000000  12.3636484   5.3628912   2.5980762   0.7934714  -0.7934714
[7]  -2.5980762  -5.3628912 -12.3636484

$xlab
[1] "Re()"

$ylab
[1] "Im()"

> xy.coords(ff, xlab = "fft") # labels "Re(fft)",  "Im(fft)"
$x
[1] 45.0 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5

$y
[1]   0.0000000  12.3636484   5.3628912   2.5980762   0.7934714  -0.7934714
[7]  -2.5980762  -5.3628912 -12.3636484

$xlab
[1] "Re(fft)"

$ylab
[1] "Im(fft)"

> ## Don't show: 
> stopifnot(identical(xy.coords(ff, xlab = "fft"),
+                     xy.coords(ff, ylab = "fft")))
> xy.labs <- function(...) xy.coords(...)[c("xlab","ylab")]
> stopifnot(identical(xy.labs(ff, xlab = "fft", setLab = FALSE),
+                     list(xlab = "fft", ylab = "fft")),
+           identical(xy.labs(ff, ylab = "fft", setLab = FALSE),
+                     list(xlab = NULL, ylab = "fft")),
+           identical(xy.labs(ff, xlab = "Re(fft)", ylab = "Im(fft)", setLab = FALSE),
+                     list(xlab = "Re(fft)", ylab = "Im(fft)")))
> ## End(Don't show)
> with(cars, xy.coords(dist ~ speed, NULL)$xlab ) # = "speed"
[1] "speed"
> 
> xy.coords(1:3, 1:2, recycle = TRUE) # otherwise error "lengths differ"
$x
[1] 1 2 3

$y
[1] 1 2 1

$xlab
NULL

$ylab
NULL

> xy.coords(-2:10, log = "y")
Warning in xy.coords(-2:10, log = "y") :
  3 y values <= 0 omitted from logarithmic plot
$x
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13

$y
 [1] NA NA NA  1  2  3  4  5  6  7  8  9 10

$xlab
[1] "Index"

$ylab
NULL

> ##> xlab: "Index"  \\  warning: 3 y values <= 0 omitted ..
> 
> 
> 
> cleanEx()
> nameEx("xyTable")
> ### * xyTable
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: xyTable
> ### Title: Multiplicities of (x,y) Points, e.g., for a Sunflower Plot
> ### Aliases: xyTable
> ### Keywords: dplot
> 
> ### ** Examples
> 
> xyTable(iris[, 3:4], digits = 6)
$x
  [1] 1.0 1.1 1.2 1.3 1.3 1.3 1.4 1.4 1.4 1.5 1.5 1.5 1.5 1.6 1.6 1.6 1.7 1.7
 [19] 1.7 1.7 1.9 1.9 3.0 3.3 3.5 3.6 3.7 3.8 3.9 3.9 3.9 4.0 4.0 4.0 4.1 4.1
 [37] 4.2 4.2 4.2 4.3 4.4 4.4 4.4 4.5 4.5 4.5 4.5 4.6 4.6 4.6 4.7 4.7 4.7 4.7
 [55] 4.8 4.8 4.9 4.9 4.9 5.0 5.0 5.0 5.0 5.1 5.1 5.1 5.1 5.1 5.1 5.1 5.2 5.2
 [73] 5.3 5.3 5.4 5.4 5.5 5.5 5.6 5.6 5.6 5.6 5.6 5.7 5.7 5.7 5.8 5.8 5.8 5.9
 [91] 5.9 6.0 6.0 6.1 6.1 6.1 6.3 6.4 6.6 6.7 6.7 6.9

$y
  [1] 0.2 0.1 0.2 0.2 0.3 0.4 0.1 0.2 0.3 0.1 0.2 0.3 0.4 0.2 0.4 0.6 0.2 0.3
 [19] 0.4 0.5 0.2 0.4 1.1 1.0 1.0 1.3 1.0 1.1 1.1 1.2 1.4 1.0 1.2 1.3 1.0 1.3
 [37] 1.2 1.3 1.5 1.3 1.2 1.3 1.4 1.3 1.5 1.6 1.7 1.3 1.4 1.5 1.2 1.4 1.5 1.6
 [55] 1.4 1.8 1.5 1.8 2.0 1.5 1.7 1.9 2.0 1.5 1.6 1.8 1.9 2.0 2.3 2.4 2.0 2.3
 [73] 1.9 2.3 2.1 2.3 1.8 2.1 1.4 1.8 2.1 2.2 2.4 2.1 2.3 2.5 1.6 1.8 2.2 2.1
 [91] 2.3 1.8 2.5 1.9 2.3 2.5 1.8 2.0 2.1 2.0 2.2 2.3

$number
  [1] 1 1 2 4 2 1 2 8 3 2 7 1 3 5 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 3 1 2 1
 [38] 2 1 2 1 1 2 1 5 1 1 1 1 1 1 2 1 1 1 3 2 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1
 [75] 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

> 
> ## Discretized uncorrelated Gaussian:
> ## Don't show: 
> set.seed(1)
> ## End(Don't show)
> require(stats)
> xy <- data.frame(x = round(sort(rnorm(100))), y = rnorm(100))
> xyTable(xy, digits = 1)
$x
 [1] -2 -2 -2 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1  0  0  0  0  0  0  0  0
[26]  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  1  1  1  1  1  1  1  1  1
[51]  1  1  1  1  1  1  2  2  2  2

$y
 [1] -0.90 -0.60  0.04  0.20 -0.70 -0.60 -0.50 -0.40 -0.30 -0.20 -0.10  0.40
[13]  0.50  0.70  0.90  1.00  2.00 -2.00 -1.00 -0.90 -0.80 -0.70 -0.60 -0.50
[25] -0.30 -0.20 -0.07 -0.06 -0.04 -0.02  0.02  0.06  0.30  0.40  0.50  0.70
[37]  0.90  1.00  2.00 -1.00 -0.90 -0.80 -0.70 -0.40 -0.30 -0.20 -0.10 -0.08
[49] -0.03  0.10  0.20  0.40  0.50  0.80  1.00  2.00 -1.00 -0.40  0.40  1.00

$number
 [1] 1 1 1 1 2 1 2 1 2 4 1 1 1 1 1 2 2 5 5 1 1 2 3 2 3 1 1 1 1 1 1 1 1 1 2 1 1 3
[39] 3 3 1 1 1 1 2 2 1 1 1 1 2 1 2 2 4 2 3 1 1 1

> 
> 
> 
> cleanEx()
> nameEx("xyz.coords")
> ### * xyz.coords
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: xyz.coords
> ### Title: Extracting Plotting Structures
> ### Aliases: xyz.coords
> ### Keywords: dplot
> 
> ### ** Examples
> 
> xyz.coords(data.frame(10*1:9, -4), y = NULL, z = NULL)
$x
[1] 1 2 3 4 5 6 7 8 9

$y
[1] 10 20 30 40 50 60 70 80 90

$z
[1] -4 -4 -4 -4 -4 -4 -4 -4 -4

$xlab
[1] "Index"

$ylab
NULL

$zlab
NULL

> 
> xyz.coords(1:5, stats::fft(1:5), z = NULL, xlab = "X", ylab = "Y")
$x
[1] 15.0 -2.5 -2.5 -2.5 -2.5

$y
[1]  0.0000000  3.4409548  0.8122992 -0.8122992 -3.4409548

$z
[1] 1 2 3 4 5

$xlab
[1] "Re(Y)"

$ylab
[1] "Im(Y)"

$zlab
[1] "X"

> 
> y <- 2 * (x2 <- 10 + (x1 <- 1:10))
> xyz.coords(y ~ x1 + x2, y = NULL, z = NULL)
$x
 [1]  1  2  3  4  5  6  7  8  9 10

$y
 [1] 11 12 13 14 15 16 17 18 19 20

$z
 [1] 22 24 26 28 30 32 34 36 38 40

$xlab
[1] "x1"

$ylab
[1] "x2"

$zlab
[1] "y"

> 
> xyz.coords(data.frame(x = -1:9, y = 2:12, z = 3:13), y = NULL, z = NULL,
+            log = "xy")
Warning in xyz.coords(data.frame(x = -1:9, y = 2:12, z = 3:13), y = NULL,  :
  2 x values <= 0 omitted from logarithmic plot
$x
 [1] NA NA  1  2  3  4  5  6  7  8  9

$y
 [1]  2  3  4  5  6  7  8  9 10 11 12

$z
 [1]  3  4  5  6  7  8  9 10 11 12 13

$xlab
[1] "x"

$ylab
[1] "y"

$zlab
[1] "z"

> ##> Warning message: 2 x values <= 0 omitted ...
> 
> 
> 
> ### * <FOOTER>
> ###
> cleanEx()
> options(digits = 7L)
> base::cat("Time elapsed: ", proc.time() - base::get("ptime", pos = 'CheckExEnv'),"\n")
Time elapsed:  83.971 1.605 86.106 0 0 
> grDevices::dev.off()
null device 
          1 
> ###
> ### Local variables: ***
> ### mode: outline-minor ***
> ### outline-regexp: "\\(> \\)?### [*]+" ***
> ### End: ***
> quit('no')
