Title: | Color Schemes for Dichromats |
---|---|
Description: | Collapse red-green or green-blue distinctions to simulate the effects of different types of color-blindness. |
Authors: | Thomas Lumley [aut, cre], Ken Knoblauch [ctb], Scott Waichler [ctb], Achim Zeileis [ctb] |
Maintainer: | Thomas Lumley <[email protected]> |
License: | GPL-2 |
Version: | 2.0-0.1 |
Built: | 2024-10-31 21:08:46 UTC |
Source: | CRAN |
17 color schemes suitable for people with deficient or anomalous red-green vision.
colorschemes
colorschemes
BrowntoBlue.10
BrowntoBlue.12
BluetoDarkOrange.12
BluetoDarkOrange.18
DarkRedtoBlue.12
DarkRedtoBlue.18
BluetoGreen.14
BluetoGray.8
BluetoOrangeRed.14
BluetoOrange.10
BluetoOrange.12
BluetoOrange.8
LightBluetoDarkBlue.10
LightBluetoDarkBlue.7
Categorical.12
GreentoMagenta.16
SteppedSequential.5
Scott Waichler <[email protected]>
https://geography.uoregon.edu/datagraphics/color_scales.htm
Light A, Bartlein PJ (2004). The End of the Rainbow? Color Schemes for Improved Data Graphics. EOS Transactions of the American Geophysical Union, 85(40), 385.
pal <- function(col, ...) image(seq_along(col), 1, matrix(seq_along(col), ncol = 1), col = col, axes = FALSE, ...) opar <- par(mar = c(1, 2, 1, 1)) layout(matrix(1:6, ncol = 1)) pal(colorschemes$BrowntoBlue.10, main = "Brown to Blue (10)") pal(colorRampPalette(colorschemes$BrowntoBlue.10, space = "Lab")(100), main = "Brown to Blue Ramp") pal(dichromat(colorschemes$BrowntoBlue.10), main = "Brown to Blue (10) -- deuteranopia") pal(colorschemes$Categorical.12, main = "Categorical (12)") pal(dichromat(colorschemes$Categorical.12), main = "Categorical (12) -- deuteranopia") pal(dichromat(colorschemes$Categorical.12, "protan"), main = "Categorical (12) -- protanopia") par(opar)
pal <- function(col, ...) image(seq_along(col), 1, matrix(seq_along(col), ncol = 1), col = col, axes = FALSE, ...) opar <- par(mar = c(1, 2, 1, 1)) layout(matrix(1:6, ncol = 1)) pal(colorschemes$BrowntoBlue.10, main = "Brown to Blue (10)") pal(colorRampPalette(colorschemes$BrowntoBlue.10, space = "Lab")(100), main = "Brown to Blue Ramp") pal(dichromat(colorschemes$BrowntoBlue.10), main = "Brown to Blue (10) -- deuteranopia") pal(colorschemes$Categorical.12, main = "Categorical (12)") pal(dichromat(colorschemes$Categorical.12), main = "Categorical (12) -- deuteranopia") pal(dichromat(colorschemes$Categorical.12, "protan"), main = "Categorical (12) -- protanopia") par(opar)
A 256-color palette as it would appear with normal vision, and with two types of red-green color blindness: protanopia and deuteronopia. Furthermore, a color palette for a type of green-blue color blindness (tritanopia) is available.
data("dalton")
data("dalton")
dalton
A 256 x 3 x 4 array. The columns index the red, green and blue color
values, the layers index the vision type.
dalton.colors
: A list of colors, with names
normal
, protan
, deutan
, tritan
.
The dalton
array lists a grid of 256 colors in RGB coordinates for
"normal"
vision as well as corresponding RGB coordinates in which
certain red-green ("deutan"
and "protan"
) or green-blue
contrasts ("tritan"
) are collapsed.
The formulas for mapping the RGB coordinates to the collapsed coordinates have been developed in a series of papers by Brettel, Mollon, and Viénot. The protan/deutan mapping is provided in Table 2 of Viénot et al. (1999) while the tritan case is discussed in Brettel at al. (1997).
The dalton.colors
list contains the sRGB colors (as R color strings)
as computed with rgb
from dalton
.
For an automatic mapping of a given color vector to its dichromatic
counterpart, see dichromat
.
The data were kindly provided by Françoise Viénot.
The deutan/protan data (rounded to integers) is also available in Table 2 of Viénot et al. (1999).
Brettel H, Viénot F, Mollon, JD (1997). Computerized Simulation of Color Appearance for Dichromats. Journal of the Optical Society of America A, 14, 2647–2655.
Viénot F, Brettel H, Ott L, M'Barek AB, Mollon JD (1995). What Do Colour-Blind People See? Nature, 376, 127–128.
Viénot F, Brettel H, Mollon JD (1999). Digital Video Colourmaps for Checking the Legibility of Displays by Dichromats. Color Research and Application, 24(4), 243–252.
data("dalton", package = "dichromat") par(mfrow = c(4, 1)) image(matrix(1:256, 128), col = dalton.colors$normal) image(matrix(1:256, 128), col = dalton.colors$deutan) image(matrix(1:256, 128), col = dalton.colors$protan) image(matrix(1:256, 128), col = dalton.colors$tritan)
data("dalton", package = "dichromat") par(mfrow = c(4, 1)) image(matrix(1:256, 128), col = dalton.colors$normal) image(matrix(1:256, 128), col = dalton.colors$deutan) image(matrix(1:256, 128), col = dalton.colors$protan) image(matrix(1:256, 128), col = dalton.colors$tritan)
Collapses red-green or green-blue color distinctions to approximate the effect of the three forms of dichromacy: protanopia and deuteranopia (red-green color blindness), and tritanopia (green-blue color blindness). deuteranopia.
dichromat(colours, type = c("deutan", "protan", "tritan"))
dichromat(colours, type = c("deutan", "protan", "tritan"))
colours |
A vector of R colors, either color names or color hex strings. |
type |
Type of color-blindness to simulate, |
Someone with the specified form of color blindness will find that the transformation has little effect on the appearance of colors. Colors that are indistinguishable after transformation were likely indistinguishable to them before transformation. About 10% of men (and almost no women) have some degree of red-green color blindness. Tritanopia is much less common but occurs in both males and females.
The mapping from the original color vector to the dichromatic counterpart
is based on a sequence of papers by Brettel, Mollon, and Viénot. For more
details, see the references and also the underlying data set dalton
.
A vector of R colors.
Thomas Lumley
Brettel H, Viénot F, Mollon, JD (1997). Computerized Simulation of Color Appearance for Dichromats. Journal of the Optical Society of America A, 14, 2647–2655.
Lumley T (2006). Color-Coding and Color Blindness in Statistical Graphics. ASA Statistical Computing & Graphics Newsletter, 17(2), 4–7. https://community.amstat.org/jointscsg-section/newsletter
Viénot F, Brettel H, Ott L, M'Barek AB, Mollon JD (1995). What Do Colour-Blind People See? Nature, 376, 127–128.
Viénot F, Brettel H, Mollon JD (1999). Digital Video Colourmaps for Checking the Legibility of Displays by Dichromats. Color Research and Application, 24(4), 243–252.
Wikipedia (2013). Color Blindness – Wikipedia, The Free Encyclopedia. https://en.wikipedia.org/wiki/Color_blindness, accessed 2013-01-16.
Wikipedia (2013). Dichromacy – Wikipedia, The Free Encyclopedia. https://en.wikipedia.org/wiki/Dichromacy, accessed 2013-01-16.
## from example(pie) par(mfrow = c(2, 2)) pie.sales <- c(0.12, 0.3, 0.26, 0.16, 0.04, 0.12) names(pie.sales) <- c("Blueberry", "Cherry", "Apple", "Boston Cream", "Other", "Vanilla Cream") pie(pie.sales, # default colors col = c("white", "lightblue", "mistyrose", "lightcyan", "lavender", "cornsilk")) pie(pie.sales, col = c("purple", "violetred1", "green3", "cornsilk", "cyan", "white")) pie(pie.sales, col = dichromat( c("white", "lightblue", "mistyrose", "lightcyan", "lavender", "cornsilk"))) pie(pie.sales, col = dichromat( c("purple", "violetred1", "green3", "cornsilk", "cyan", "white"))) ## standard color schemes pie(rep(1,10), col = heat.colors(10)) pie(rep(1,10), col = dichromat(heat.colors(10))) pie(rep(1,8), col = palette()) pie(rep(1,8), col = dichromat(palette())) pie(rep(1,15), col = topo.colors(15)) pie(rep(1,15), col = dichromat(topo.colors(15))) pie(rep(1,15), col = terrain.colors(15)) pie(rep(1,15), col = dichromat(terrain.colors(15))) pie(rep(1,15), col = cm.colors(15)) pie(rep(1,15), col = dichromat(cm.colors(15))) ## color ramp schemes bluescale <- colorRampPalette(c("#FFFFCC", "#C7E9B4", "#7FCDBB", "#40B6C4", "#2C7FB8" , "#253494")) redgreen <- colorRampPalette(c("red", "green3")) pie(rep(1,15), col = bluescale(15)) pie(rep(1,15), col = dichromat(bluescale(15))) par(mfrow = c(2, 4)) x <- matrix(rnorm(10 * 10), 10) image(1:10, 1:10, x, col = bluescale(10), main = "blue-yellow scale") image(1:10, 1:10, x, col = dichromat(bluescale(10), "deutan"), main = "deutan") image(1:10, 1:10, x, col = dichromat(bluescale(10), "protan"), main = "protan") image(1:10, 1:10, x, col = dichromat(bluescale(10), "tritan"), main = "tritan") image(1:10, 1:10, x, col = redgreen(10), main = "red-green scale") image(1:10, 1:10, x, col = dichromat(redgreen(10), "deutan"), main = "deutan") image(1:10, 1:10, x, col = dichromat(redgreen(10), "protan"), main = "protan") image(1:10, 1:10, x, col = dichromat(redgreen(10), "tritan"), main = "tritan")
## from example(pie) par(mfrow = c(2, 2)) pie.sales <- c(0.12, 0.3, 0.26, 0.16, 0.04, 0.12) names(pie.sales) <- c("Blueberry", "Cherry", "Apple", "Boston Cream", "Other", "Vanilla Cream") pie(pie.sales, # default colors col = c("white", "lightblue", "mistyrose", "lightcyan", "lavender", "cornsilk")) pie(pie.sales, col = c("purple", "violetred1", "green3", "cornsilk", "cyan", "white")) pie(pie.sales, col = dichromat( c("white", "lightblue", "mistyrose", "lightcyan", "lavender", "cornsilk"))) pie(pie.sales, col = dichromat( c("purple", "violetred1", "green3", "cornsilk", "cyan", "white"))) ## standard color schemes pie(rep(1,10), col = heat.colors(10)) pie(rep(1,10), col = dichromat(heat.colors(10))) pie(rep(1,8), col = palette()) pie(rep(1,8), col = dichromat(palette())) pie(rep(1,15), col = topo.colors(15)) pie(rep(1,15), col = dichromat(topo.colors(15))) pie(rep(1,15), col = terrain.colors(15)) pie(rep(1,15), col = dichromat(terrain.colors(15))) pie(rep(1,15), col = cm.colors(15)) pie(rep(1,15), col = dichromat(cm.colors(15))) ## color ramp schemes bluescale <- colorRampPalette(c("#FFFFCC", "#C7E9B4", "#7FCDBB", "#40B6C4", "#2C7FB8" , "#253494")) redgreen <- colorRampPalette(c("red", "green3")) pie(rep(1,15), col = bluescale(15)) pie(rep(1,15), col = dichromat(bluescale(15))) par(mfrow = c(2, 4)) x <- matrix(rnorm(10 * 10), 10) image(1:10, 1:10, x, col = bluescale(10), main = "blue-yellow scale") image(1:10, 1:10, x, col = dichromat(bluescale(10), "deutan"), main = "deutan") image(1:10, 1:10, x, col = dichromat(bluescale(10), "protan"), main = "protan") image(1:10, 1:10, x, col = dichromat(bluescale(10), "tritan"), main = "tritan") image(1:10, 1:10, x, col = redgreen(10), main = "red-green scale") image(1:10, 1:10, x, col = dichromat(redgreen(10), "deutan"), main = "deutan") image(1:10, 1:10, x, col = dichromat(redgreen(10), "protan"), main = "protan") image(1:10, 1:10, x, col = dichromat(redgreen(10), "tritan"), main = "tritan")