
R version 3.6.2 Patched (2020-02-12 r77795) -- "Dark and Stormy Night"
Copyright (C) 2020 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 = 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,] "red"     "#FF0000BF"
[3,] "green3"  "#00CD00BF"
[4,] "blue"    "#0000FFBF"
[5,] "cyan"    "#00FFFFBF"
[6,] "magenta" "#FF00FFBF"
[7,] "yellow"  "#FFFF00BF"
[8,] "gray"    "#BEBEBEBF"
> 
> ##  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,] "red"     "#FF808099"
[3,] "green3"  "#80FF8099"
[4,] "blue"    "#8080FF99"
[5,] "cyan"    "#80FFFF99"
[6,] "magenta" "#FF80FF99"
[7,] "yellow"  "#FFFF8099"
[8,] "gray"    "#FFFFFF99"
> 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" "#555555FF" "#444444FF" "#555555FF" "#AAAAAAFF" "#AAAAAAFF"
[7] "#AAAAAAFF" "#BEBEBEFF"
> 
> ## 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, n = 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("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  255    0    0    0  255  255  190
green    0    0  205    0  255    0  255  190
blue     0    0    0  255  255  255    0  190
> 
> 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      255        0
green        0        0      205
blue         0        0        0
> 
> ##-- 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 = 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(w = .92, h = .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)
> contourLines(x, y, volcano)
> 
> 
> 
> 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
red     255     0    0
green3    0   205    0
blue      0     0  255
cyan      0   255  255
magenta 255     0  255
yellow  255   255    0
gray    190   190  190
> zapsmall(lab <- convertColor(cols, from = "sRGB", to = "Lab", scale.in = 255))
               L         a          b
black    0.00000   0.00000    0.00000
red     53.48418  80.01027   67.38407
green3  71.91841 -73.33548   70.41134
blue    32.24075  78.82042 -107.93632
cyan    91.01106 -48.46075  -14.29081
magenta 60.50231  97.95195  -60.51490
yellow  97.14950 -21.36677   94.42044
gray    76.97594   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)

> 
> 
> 
> 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 = 72:85, xlab = "Year", ylab = "Students",
+           legend = 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 = 4)))
> 
> # Cool Colors
> csphd(hcl(h = seq(120, 0, length = 4) + 150))
> 
> # Warm Colors
> csphd(hcl(h = seq(120, 0, length = 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.lab = TRUE) # ditto

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

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

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

> hcl.wheel(ch = 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(ch = 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,] 255     0    0
[3,]   0   205    0
[4,]   0     0  255
[5,]   0   255  255
[6,] 255     0  255
[7,] 255   255    0
[8,] 190   190  190
> zapsmall(luv <- convertColor(cols, from = "sRGB", to = "Luv", scale.in = 255))
            L         u          v
[1,]  0.00000   0.00000    0.00000
[2,] 53.48418 175.36468   37.80017
[3,] 71.91841 -68.70661   87.86408
[4,] 32.24075  -9.66060 -130.19297
[5,] 91.01106 -71.17303  -15.34147
[6,] 60.50231  84.56678 -108.14654
[7,] 97.14950   7.89815  106.44098
[8,] 76.97594   0.00000    0.00000
> (hex <- convertColor(luv, from = "Luv",  to = hexcolor, scale.out = NULL))
     [,1]     
[1,] "#000000"
[2,] "#FF0000"
[3,] "#00CD00"
[4,] "#0000FF"
[5,] "#00FFFF"
[6,] "#FF00FF"
[7,] "#FFFF00"
[8,] "#BEBEBE"
> 
> ## 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,]  255    0    0
[3,]    0  205    0
[4,]    0    0  255
[5,]    0  255  255
[6,]  255    0  255
[7,]  255  255    0
[8,]  190  190  190
> 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,]  255    0    0
[3,]    0  205    0
[4,]    0    0  255
[5,]    0  255  255
[6,]  255    0  255
[7,]  255  255    0
[8,]  190  190  190
> 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, len = 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:10, n2mfrow)
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    1    2    3    2    3    3    3    3    3     4
[2,]    1    1    1    2    2    2    3    3    3     3
> 
> 
> 
> 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
> ### Keywords: color sysdata
> 
> ### ** Examples
> 
> require(graphics)
> 
> palette()               # obtain the current palette
[1] "black"   "red"     "green3"  "blue"    "cyan"    "magenta" "yellow" 
[8] "gray"   
> palette(rainbow(6))     # six color rainbow
> 
> (palette(gray(seq(0,.9,len = 25)))) # gray scales; print old palette
[1] "red"     "yellow"  "green"   "cyan"    "blue"    "magenta"
> 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")
> 
> 
> 
> 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(parse(text = 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, ncol %/% nrow + 1)),
+         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]
+     }
+ 
+     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"       "Dark Mint"     "Mint"         
[29] "BluGrn"        "Teal"          "TealGrn"       "Emrld"        
[33] "BluYl"         "ag_GrnYl"      "Peach"         "PinkYl"       
[37] "Burg"          "BurgYl"        "RedOr"         "OrYel"        
[41] "Purp"          "PurpOr"        "Sunset"        "Magenta"      
[45] "SunsetDark"    "ag_Sunset"     "BrwnYl"        "YlOrRd"       
[49] "YlOrBr"        "OrRd"          "Oranges"       "YlGn"         
[53] "YlGnBu"        "Reds"          "RdPu"          "PuRd"         
[57] "Purples"       "PuBuGn"        "PuBu"          "Greens"       
[61] "BuGn"          "GnBu"          "BuPu"          "Blues"        
[65] "Lajolla"       "Turku"        
> 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" 
> 
> 
> 
> 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 TRUE
 $ 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, len = 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
> 
> 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 = 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, max = 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 = 5)), max = 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:  10.472 0.24 10.752 0 0 
> grDevices::dev.off()
null device 
          1 
> ###
> ### Local variables: ***
> ### mode: outline-minor ***
> ### outline-regexp: "\\(> \\)?### [*]+" ***
> ### End: ***
> quit('no')
