Using Color in R
Using Color in R
Earl F. Glynn
Using Color in R
Color
Basics in R
Using Color in R
> palette()
[1] "black" "red" "green3" "gray"
3
"blue"
"cyan"
Using Color in R
Using Color in R
Color Names
"#FF9900" "#CCFF00" "#33FF00" "#00FF66" "#0066FF" "#3300FF" "#CC00FF" "#FF0099"
Cut/Paste Bitmap
"green3" "gray"
Recycled Colors 5
Using Color in R
"#DFDFDF" "white"
> # colors are "recycled" if necessary > barplot(rep(1,20),col=1:20, yaxt="n") > > palette("default") > palette() [1] "black" "blue" "red" "cyan" "green3" Recycled Colors "gray" 6
Using Color in R
Using Color in R
http://research.stowers-institute.org/efg/R/Color/Chart/index.htm
Using Color in R
Print seven page table to compare screen colors with printed colors. 9 http://research.stowers-institute.org/efg/R/Color/Chart/ColorChart.pdf
Using Color in R
Hex "FF" = 15*161 + 15*160 = 255 Hex "00" to "FF" can be interpreted as 0.0 to 1.0.
10
Numbers represented in "base 16" are called "hexadecimal". Hex "FF" is largest value represented by one byte (8 bits).
Color Basics
In R Color can be represented by index into palette color name hex constant (24-bit "True Color": 2563 colors = 16,777,216 colors)
Using Color in R
Color Basics
In R many objects can take on different colors: points lines axes text legends background
Using Color in R
Using Color in R
0 -2
-1
0 x
> plot(x,y, col=c("black", "red", "green3", "blue", "cyan"), pch=CIRCLE, cex=2) > plot(x,y, col=c("#000000", "#FF0000", "green3", 4, 5), pch=CIRCLE, cex=2)
Hex #rrggbb Color name Palette Index
Using Color in R
1:n
10
15
20
10 Index
15
20
Using Color in R
p=0
Colors 1 to 32
p=1
Using Color in R
p=0
p=1
Using Color in R
250
blue
100
150
200
300 250 200 150 100 50 0 -50 -50 0 50 100 150 200 250 300
-50
red
green
50
Using Color in R
Chart Title 4 6
Top
10 10 Right
par(col.lab="orange", col.main="gray") plot(0:10,0:10, col=0:10, pch=CIRCLE<-16, main="Chart Title", axes=FALSE, xlab="X axis",ylab="Y axis") # Margin Text mtext("Bottom", mtext("Left", mtext("Top", mtext("Right", BOTTOM, LEFT, TOP, RIGHT, col="red") col="green") col="blue") col="magenta") 10 in red
Y axis
80
60 Left
40
20
AXIS_LABEL_HORIZONTAL <- 1 axis(LEFT, col="green", col.axis="green", at=2*0:5, labels=paste(20*0:5), las=AXIS_LABEL_HORIZONTAL) axis(TOP, col="blue", col.axis="blue") axis(RIGHT, col="magenta", col.axis="magenta")
0 Bottom 0 2 4 X axis 6 8 10
Using Color in R
COLORS <- c("red", "green", "blue") LINE.TYPES <- c("solid", "dotted", "dashed") Periods <- data.frame( Period1=Period1, Period2=Period2, Period3=Period3)
matplot(Periods, type = "l", xlab="Time[min]",ylab="Expression", col = COLORS, lty = LINE.TYPES) legend("bottomleft", c("120 min period", " 90 min period", "150 min period"), col = COLORS, lty = LINE.TYPES)
-1.0
120 min period 90 min period 150 min period 0 20 40 60 Time[min] 80 100 120
Using Color in R
0 -2
-1
0 x
Set graphic background to simplify cutting and pasting to PowerPoint! Avoids in PowerPoint: Format Picture | Colors and Lines | Fill Color
Using Color in R
Color
Basics in R
Using Color in R
[1] "#FF0000" > rgb(0,1,0) [1] "#00FF00" > rgb(1,1,0) [1] "#FFFF00" > rgb(255,0,0, maxColorValue=255) [1] "#FF0000" > col2rgb(c("blue", "yellow"))
red green blue [,1] [,2] 0 255 0 255 255 0
#rrggbb
R G B
Color is additive in the RGB Color Model. Coordinate values not always obvious.
22
Using Color in R
Blue
Cyan
255
Magenta
White
255, 255, 255
Red
0.0 to 1.0 0 to 255 (8-bits)
Green 255
Yellow
24-bit graphics: 256 x 256 x 256 = 16,777,216 colors 256 shades of grey
Contrasting Colors?
Using Color in R
Hue-Saturation-Value
Source: http://scien.stanford.edu/class/psych221/projects/02/sojeong/
24
> hsv(1,1,1) [1] "#FF0000" > hsv(1/3,1,1) [1] "#00FF00" > hsv(2/3,1,1) [1] "#0000FF"
Using Color in R
hue <- seq(0.0, 1.0, by=1/40) pie(rep(1,40), labels=formatC(hue, digits=3, format="f"), cex=0.75, col=hsv(hue, 1.0, 1.0), radius=1.0, main="HSV (S=1, V=1)" ) > rgb2hsv(col2rgb("blue")) [,1] h 0.6666667 s 1.0000000 Contrasting Colors? v 1.0000000
0.425 0.450
0.375 0.400
0.475 0.500
0.000 0.975
0.525 0.550 0.575 0.600 0.625 0.650 0.675 0.700 0.725 0.750 0.775 0.800 0.825
25
Color Spaces
help(package=colorspace)
Using Color in R
26
Using Color in R
Color
Basics in R
Using Color in R
colorstrip <- function(colors, description, ShowAxis=FALSE) { count <- length(colors) m <- matrix(1:count, count, 1) image(m, col=colors, ylab="", axes=FALSE)
heat.colors
terrain.colors
topo.colors
COLOR.COUNT <- 256 colorstrip(rainbow(COLOR.COUNT), "rainbow") colorstrip(heat.colors(COLOR.COUNT), "heat.colors") colorstrip(terrain.colors(COLOR.COUNT), "terrain.colors") colorstrip(topo.colors(COLOR.COUNT), "topo.colors") colorstrip(cm.colors(COLOR.COUNT), "cm.colors (cyan-magenta)") colorstrip(gray(0:COLOR.COUNT / COLOR.COUNT),"gray")
cm.colors (cyan-magenta)
gray
28
Using Color in R
m <- outer(1:20,1:20,function(x,y) sin(sqrt(x*y)/3)) rgb.palette <- colorRampPalette(c("red", "orange", "blue"), space = "rgb") filled.contour(m,col = rgb.palette(20))
0.8 0.5
-0.5 0.2
-1.0
1.0
1.0
# space="Lab" helps when colors don't form a # natural sequence Lab.palette <- colorRampPalette(c("red", "orange", "blue"), space = "Lab") filled.contour(m,col = Lab.palette(20))
0.8 0.5
-0.5 0.2
29
-1.0
Using Color in R
0.0
0.4
0.8
30
Using Color in R
31
Using Color in R
Source: http://www.efg2.com/Lab/ScienceAndEngineering/Spectra.htm
32
Using Color in R
Color
Basics in R
Color Blindness
Ishihara Test for Color Blindness
Using Color in R
Normal Color Vision: 25, 29, 45, 56, 6, 8 Red-Green Color Blind: 25, spots, spots, 56, spots, spots
Source: http://www.toledo-bend.com/colorblind/Ishihara.html
About 1 in 12 have some sort of color deficiency: About ~8% of men and ~0.4% of women in the US.
http://en.wikipedia.org/wiki/Color_blindness 34
Color Blindness
R dichromat Package: Color Schemes for dichromats
library(dichromat) par(mfcol=c(1,2)) N <- 20 pie(rep(1,N),col=heat.colors(N)) pie(rep(1,N),col=dichromat(heat.colors(N)))
Using Color in R
dichromat function collapses red-green color distinctions to approximate the effect of the two 35 common forms of red-green color blindness, protanopia and deuteranopia.
Color Blindness
R dichromat Package: Color Schemes for dichromats
library(dichromat) par(mar=c(1,2,1,1)) layout(matrix(1:6,ncol=1)) image(1:10,1,matrix(1:10, ncol=1), col=colorschemes$BrowntoBlue.10, main="Brown to Blue (10)", axes=FALSE) image(1:100,1,matrix(1:100 ,ncol=1), col=colorRampPalette(colorschemes$BrowntoBlue.10,space="Lab")(100), main="Brown to Blue Ramp", axes=FALSE) image(1:10,1,matrix(1:10, ncol=1), col=dichromat(colorschemes$BrowntoBlue.10), main="Brown to Blue (10) -- deuteranopia", axes=FALSE) image(1:12,1,matrix(1:12, ncol=1),col=colorschemes$Categorical.12, main="Categorical (12)", axes=FALSE) image(1:12,1,matrix(1:12, ncol=1), col=dichromat(colorschemes$Categorical.12), main="Categorical (12) -- deuteranopia", axes=FALSE) image(1:12,1,matrix(1:12,ncol=1), col=dichromat(colorschemes$Categorical.12, "protan"), main="Categorical (12) -- protanopia", axes=FALSE)
Using Color in R
36
Color Blindness
R dichromat Package: Color Schemes for dichromats
Brown to Blue (10)
Using Color in R
Categorical (12)
37
Using Color in R
Color
Basics in R
Using Color in R
39
Using Color in R
40
3D Color Gamut
Using Color in R
From Visualization of Expanded Printing Gamuts Using 3-Dimensional Convex Hulls by Karl Guyler, Hallmark Cards, Kansas City
Using Color in R
Imperfect conversions:
CRT screens with RGB (Red-Green-Blue) additive colors must be converted to CMYK (Cyan-Magenta-Yellow-Black) subtractive colors
Using Color in R
Color
Basics in R
Color Tips
Avoid
Using Color in R
Use bright colors with small graphics to make them stand out. Be consistent in use of color. Don't use color as only attribute to show difference. E.g., consider color and line type.
Also see: Cool Color Commentary, http://www.public-speaking.org/public-speaking-color-article.htm 44
Using Color in R
Sequential Palette
for coding numerical information in a range typical application: heat map
Diverging Palette
Like Sequential Palette but with neutral value
Source: Choosing Color Palettes for Statistical Graphics 45 http://epub.wu-wien.ac.at/dyn/virlib/wp/mediate/epub-wu-01_abd.pdf?ID=epub-wu-01_abd
References
Colour for Presentation Graphics
http://www.stat.auckland.ac.nz/~ihaka/colour/color-talk.pdf
Using Color in R
46