Hoofdstuk 3: Kleuren: Kleurrijk.

Kleuren in R kunnen op verschillende manieren worden toegevoegd aan R datavisualisaties. Kleur is niet alleen maar een kwestie van smaak, maar het is ook een zeer effectieve manier om het visueel coderen en het organiseren van de informatie uit te voeren.

Kleur kan de duidelijkheid van een visuele presentatie verbeteren.

Kijkers/lezers geven betekenis aan kleur. Kleur moet door de ontwerper consistent worden toegepast en passen bij de context en content.

Kleur waarneming (perceptie) bestaat uit drie elementen:

  1. Hue. Onze ogen zien alleen rood, groen en blauw licht. En alle mengvormen daarvan.

  2. Lightness. De interpretatie van de reflectie van licht van een oppervlak. Dit is de belangrijkste “drager” voor onze perceptie van de drie kleuren (RGB).

  3. Saturation of chroma, de intensiviteit van kleur

Alle kleuren hebben een Hue, Saturation & Lightness waarde (HSL). Af te lezen uit een kleurenwiel van 0 – 360 graden.

Rood Hue = 0, Groen Hue = 90, Cyaan Hue= 180 en Paars Hue=270.

colors()  # 655 kleurnamen maximaal mogelijk om dit aantal kleuren te gebruiken op basis van deze namenlijst. Met RGB / Hex waarden zijn dat er meer dan 16,7 miljoen.
##   [1] "white"                "aliceblue"            "antiquewhite"        
##   [4] "antiquewhite1"        "antiquewhite2"        "antiquewhite3"       
##   [7] "antiquewhite4"        "aquamarine"           "aquamarine1"         
##  [10] "aquamarine2"          "aquamarine3"          "aquamarine4"         
##  [13] "azure"                "azure1"               "azure2"              
##  [16] "azure3"               "azure4"               "beige"               
##  [19] "bisque"               "bisque1"              "bisque2"             
##  [22] "bisque3"              "bisque4"              "black"               
##  [25] "blanchedalmond"       "blue"                 "blue1"               
##  [28] "blue2"                "blue3"                "blue4"               
##  [31] "blueviolet"           "brown"                "brown1"              
##  [34] "brown2"               "brown3"               "brown4"              
##  [37] "burlywood"            "burlywood1"           "burlywood2"          
##  [40] "burlywood3"           "burlywood4"           "cadetblue"           
##  [43] "cadetblue1"           "cadetblue2"           "cadetblue3"          
##  [46] "cadetblue4"           "chartreuse"           "chartreuse1"         
##  [49] "chartreuse2"          "chartreuse3"          "chartreuse4"         
##  [52] "chocolate"            "chocolate1"           "chocolate2"          
##  [55] "chocolate3"           "chocolate4"           "coral"               
##  [58] "coral1"               "coral2"               "coral3"              
##  [61] "coral4"               "cornflowerblue"       "cornsilk"            
##  [64] "cornsilk1"            "cornsilk2"            "cornsilk3"           
##  [67] "cornsilk4"            "cyan"                 "cyan1"               
##  [70] "cyan2"                "cyan3"                "cyan4"               
##  [73] "darkblue"             "darkcyan"             "darkgoldenrod"       
##  [76] "darkgoldenrod1"       "darkgoldenrod2"       "darkgoldenrod3"      
##  [79] "darkgoldenrod4"       "darkgray"             "darkgreen"           
##  [82] "darkgrey"             "darkkhaki"            "darkmagenta"         
##  [85] "darkolivegreen"       "darkolivegreen1"      "darkolivegreen2"     
##  [88] "darkolivegreen3"      "darkolivegreen4"      "darkorange"          
##  [91] "darkorange1"          "darkorange2"          "darkorange3"         
##  [94] "darkorange4"          "darkorchid"           "darkorchid1"         
##  [97] "darkorchid2"          "darkorchid3"          "darkorchid4"         
## [100] "darkred"              "darksalmon"           "darkseagreen"        
## [103] "darkseagreen1"        "darkseagreen2"        "darkseagreen3"       
## [106] "darkseagreen4"        "darkslateblue"        "darkslategray"       
## [109] "darkslategray1"       "darkslategray2"       "darkslategray3"      
## [112] "darkslategray4"       "darkslategrey"        "darkturquoise"       
## [115] "darkviolet"           "deeppink"             "deeppink1"           
## [118] "deeppink2"            "deeppink3"            "deeppink4"           
## [121] "deepskyblue"          "deepskyblue1"         "deepskyblue2"        
## [124] "deepskyblue3"         "deepskyblue4"         "dimgray"             
## [127] "dimgrey"              "dodgerblue"           "dodgerblue1"         
## [130] "dodgerblue2"          "dodgerblue3"          "dodgerblue4"         
## [133] "firebrick"            "firebrick1"           "firebrick2"          
## [136] "firebrick3"           "firebrick4"           "floralwhite"         
## [139] "forestgreen"          "gainsboro"            "ghostwhite"          
## [142] "gold"                 "gold1"                "gold2"               
## [145] "gold3"                "gold4"                "goldenrod"           
## [148] "goldenrod1"           "goldenrod2"           "goldenrod3"          
## [151] "goldenrod4"           "gray"                 "gray0"               
## [154] "gray1"                "gray2"                "gray3"               
## [157] "gray4"                "gray5"                "gray6"               
## [160] "gray7"                "gray8"                "gray9"               
## [163] "gray10"               "gray11"               "gray12"              
## [166] "gray13"               "gray14"               "gray15"              
## [169] "gray16"               "gray17"               "gray18"              
## [172] "gray19"               "gray20"               "gray21"              
## [175] "gray22"               "gray23"               "gray24"              
## [178] "gray25"               "gray26"               "gray27"              
## [181] "gray28"               "gray29"               "gray30"              
## [184] "gray31"               "gray32"               "gray33"              
## [187] "gray34"               "gray35"               "gray36"              
## [190] "gray37"               "gray38"               "gray39"              
## [193] "gray40"               "gray41"               "gray42"              
## [196] "gray43"               "gray44"               "gray45"              
## [199] "gray46"               "gray47"               "gray48"              
## [202] "gray49"               "gray50"               "gray51"              
## [205] "gray52"               "gray53"               "gray54"              
## [208] "gray55"               "gray56"               "gray57"              
## [211] "gray58"               "gray59"               "gray60"              
## [214] "gray61"               "gray62"               "gray63"              
## [217] "gray64"               "gray65"               "gray66"              
## [220] "gray67"               "gray68"               "gray69"              
## [223] "gray70"               "gray71"               "gray72"              
## [226] "gray73"               "gray74"               "gray75"              
## [229] "gray76"               "gray77"               "gray78"              
## [232] "gray79"               "gray80"               "gray81"              
## [235] "gray82"               "gray83"               "gray84"              
## [238] "gray85"               "gray86"               "gray87"              
## [241] "gray88"               "gray89"               "gray90"              
## [244] "gray91"               "gray92"               "gray93"              
## [247] "gray94"               "gray95"               "gray96"              
## [250] "gray97"               "gray98"               "gray99"              
## [253] "gray100"              "green"                "green1"              
## [256] "green2"               "green3"               "green4"              
## [259] "greenyellow"          "grey"                 "grey0"               
## [262] "grey1"                "grey2"                "grey3"               
## [265] "grey4"                "grey5"                "grey6"               
## [268] "grey7"                "grey8"                "grey9"               
## [271] "grey10"               "grey11"               "grey12"              
## [274] "grey13"               "grey14"               "grey15"              
## [277] "grey16"               "grey17"               "grey18"              
## [280] "grey19"               "grey20"               "grey21"              
## [283] "grey22"               "grey23"               "grey24"              
## [286] "grey25"               "grey26"               "grey27"              
## [289] "grey28"               "grey29"               "grey30"              
## [292] "grey31"               "grey32"               "grey33"              
## [295] "grey34"               "grey35"               "grey36"              
## [298] "grey37"               "grey38"               "grey39"              
## [301] "grey40"               "grey41"               "grey42"              
## [304] "grey43"               "grey44"               "grey45"              
## [307] "grey46"               "grey47"               "grey48"              
## [310] "grey49"               "grey50"               "grey51"              
## [313] "grey52"               "grey53"               "grey54"              
## [316] "grey55"               "grey56"               "grey57"              
## [319] "grey58"               "grey59"               "grey60"              
## [322] "grey61"               "grey62"               "grey63"              
## [325] "grey64"               "grey65"               "grey66"              
## [328] "grey67"               "grey68"               "grey69"              
## [331] "grey70"               "grey71"               "grey72"              
## [334] "grey73"               "grey74"               "grey75"              
## [337] "grey76"               "grey77"               "grey78"              
## [340] "grey79"               "grey80"               "grey81"              
## [343] "grey82"               "grey83"               "grey84"              
## [346] "grey85"               "grey86"               "grey87"              
## [349] "grey88"               "grey89"               "grey90"              
## [352] "grey91"               "grey92"               "grey93"              
## [355] "grey94"               "grey95"               "grey96"              
## [358] "grey97"               "grey98"               "grey99"              
## [361] "grey100"              "honeydew"             "honeydew1"           
## [364] "honeydew2"            "honeydew3"            "honeydew4"           
## [367] "hotpink"              "hotpink1"             "hotpink2"            
## [370] "hotpink3"             "hotpink4"             "indianred"           
## [373] "indianred1"           "indianred2"           "indianred3"          
## [376] "indianred4"           "ivory"                "ivory1"              
## [379] "ivory2"               "ivory3"               "ivory4"              
## [382] "khaki"                "khaki1"               "khaki2"              
## [385] "khaki3"               "khaki4"               "lavender"            
## [388] "lavenderblush"        "lavenderblush1"       "lavenderblush2"      
## [391] "lavenderblush3"       "lavenderblush4"       "lawngreen"           
## [394] "lemonchiffon"         "lemonchiffon1"        "lemonchiffon2"       
## [397] "lemonchiffon3"        "lemonchiffon4"        "lightblue"           
## [400] "lightblue1"           "lightblue2"           "lightblue3"          
## [403] "lightblue4"           "lightcoral"           "lightcyan"           
## [406] "lightcyan1"           "lightcyan2"           "lightcyan3"          
## [409] "lightcyan4"           "lightgoldenrod"       "lightgoldenrod1"     
## [412] "lightgoldenrod2"      "lightgoldenrod3"      "lightgoldenrod4"     
## [415] "lightgoldenrodyellow" "lightgray"            "lightgreen"          
## [418] "lightgrey"            "lightpink"            "lightpink1"          
## [421] "lightpink2"           "lightpink3"           "lightpink4"          
## [424] "lightsalmon"          "lightsalmon1"         "lightsalmon2"        
## [427] "lightsalmon3"         "lightsalmon4"         "lightseagreen"       
## [430] "lightskyblue"         "lightskyblue1"        "lightskyblue2"       
## [433] "lightskyblue3"        "lightskyblue4"        "lightslateblue"      
## [436] "lightslategray"       "lightslategrey"       "lightsteelblue"      
## [439] "lightsteelblue1"      "lightsteelblue2"      "lightsteelblue3"     
## [442] "lightsteelblue4"      "lightyellow"          "lightyellow1"        
## [445] "lightyellow2"         "lightyellow3"         "lightyellow4"        
## [448] "limegreen"            "linen"                "magenta"             
## [451] "magenta1"             "magenta2"             "magenta3"            
## [454] "magenta4"             "maroon"               "maroon1"             
## [457] "maroon2"              "maroon3"              "maroon4"             
## [460] "mediumaquamarine"     "mediumblue"           "mediumorchid"        
## [463] "mediumorchid1"        "mediumorchid2"        "mediumorchid3"       
## [466] "mediumorchid4"        "mediumpurple"         "mediumpurple1"       
## [469] "mediumpurple2"        "mediumpurple3"        "mediumpurple4"       
## [472] "mediumseagreen"       "mediumslateblue"      "mediumspringgreen"   
## [475] "mediumturquoise"      "mediumvioletred"      "midnightblue"        
## [478] "mintcream"            "mistyrose"            "mistyrose1"          
## [481] "mistyrose2"           "mistyrose3"           "mistyrose4"          
## [484] "moccasin"             "navajowhite"          "navajowhite1"        
## [487] "navajowhite2"         "navajowhite3"         "navajowhite4"        
## [490] "navy"                 "navyblue"             "oldlace"             
## [493] "olivedrab"            "olivedrab1"           "olivedrab2"          
## [496] "olivedrab3"           "olivedrab4"           "orange"              
## [499] "orange1"              "orange2"              "orange3"             
## [502] "orange4"              "orangered"            "orangered1"          
## [505] "orangered2"           "orangered3"           "orangered4"          
## [508] "orchid"               "orchid1"              "orchid2"             
## [511] "orchid3"              "orchid4"              "palegoldenrod"       
## [514] "palegreen"            "palegreen1"           "palegreen2"          
## [517] "palegreen3"           "palegreen4"           "paleturquoise"       
## [520] "paleturquoise1"       "paleturquoise2"       "paleturquoise3"      
## [523] "paleturquoise4"       "palevioletred"        "palevioletred1"      
## [526] "palevioletred2"       "palevioletred3"       "palevioletred4"      
## [529] "papayawhip"           "peachpuff"            "peachpuff1"          
## [532] "peachpuff2"           "peachpuff3"           "peachpuff4"          
## [535] "peru"                 "pink"                 "pink1"               
## [538] "pink2"                "pink3"                "pink4"               
## [541] "plum"                 "plum1"                "plum2"               
## [544] "plum3"                "plum4"                "powderblue"          
## [547] "purple"               "purple1"              "purple2"             
## [550] "purple3"              "purple4"              "red"                 
## [553] "red1"                 "red2"                 "red3"                
## [556] "red4"                 "rosybrown"            "rosybrown1"          
## [559] "rosybrown2"           "rosybrown3"           "rosybrown4"          
## [562] "royalblue"            "royalblue1"           "royalblue2"          
## [565] "royalblue3"           "royalblue4"           "saddlebrown"         
## [568] "salmon"               "salmon1"              "salmon2"             
## [571] "salmon3"              "salmon4"              "sandybrown"          
## [574] "seagreen"             "seagreen1"            "seagreen2"           
## [577] "seagreen3"            "seagreen4"            "seashell"            
## [580] "seashell1"            "seashell2"            "seashell3"           
## [583] "seashell4"            "sienna"               "sienna1"             
## [586] "sienna2"              "sienna3"              "sienna4"             
## [589] "skyblue"              "skyblue1"             "skyblue2"            
## [592] "skyblue3"             "skyblue4"             "slateblue"           
## [595] "slateblue1"           "slateblue2"           "slateblue3"          
## [598] "slateblue4"           "slategray"            "slategray1"          
## [601] "slategray2"           "slategray3"           "slategray4"          
## [604] "slategrey"            "snow"                 "snow1"               
## [607] "snow2"                "snow3"                "snow4"               
## [610] "springgreen"          "springgreen1"         "springgreen2"        
## [613] "springgreen3"         "springgreen4"         "steelblue"           
## [616] "steelblue1"           "steelblue2"           "steelblue3"          
## [619] "steelblue4"           "tan"                  "tan1"                
## [622] "tan2"                 "tan3"                 "tan4"                
## [625] "thistle"              "thistle1"             "thistle2"            
## [628] "thistle3"             "thistle4"             "tomato"              
## [631] "tomato1"              "tomato2"              "tomato3"             
## [634] "tomato4"              "turquoise"            "turquoise1"          
## [637] "turquoise2"           "turquoise3"           "turquoise4"          
## [640] "violet"               "violetred"            "violetred1"          
## [643] "violetred2"           "violetred3"           "violetred4"          
## [646] "wheat"                "wheat1"               "wheat2"              
## [649] "wheat3"               "wheat4"               "whitesmoke"          
## [652] "yellow"               "yellow1"              "yellow2"             
## [655] "yellow3"              "yellow4"              "yellowgreen"

Handig document(*pdf) online:

http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf

par(mfrow=c(2, 2),las=1,lty=0,bg=("#F1F2ED"))
barplot(1, axes=FALSE, col=655)
barplot(c(1, 1, 1), axes=FALSE, col=c(4,5,6))

paletNaam<-c("red","#4682B4","#00008B",344)
barplot(1, axes=FALSE, col=paletNaam)
barplot(c(1, 2, 1, 4), axes=FALSE, col=paletNaam)
Figuur 150. Vier kleurrijke figuurtjes.

Figuur 150. Vier kleurrijke figuurtjes.

Standaard kleurpaletten in R

Standaard R namen

par(mfrow=c(2, 2),las=1,lty=0,bg=("white"))
barplot(1,axes=FALSE,col ="lightslateblue") 
barplot(1,axes=FALSE,col ="steelblue1")
barplot(1,axes=FALSE,col ="darkorange") 
barplot(1,axes=FALSE,col ="yellow3") 
Figuur 151. Kleuren met kleurnamen uitgevoerd.

Figuur 151. Kleuren met kleurnamen uitgevoerd.

RGB omzetten naar # hexidecimale kleurcode

rgb(49, 66, 144, maxColorValue = 255)
## [1] "#314290"
rgb(74, 113, 192, maxColorValue = 255)
## [1] "#4A71C0"
rgb(240, 211, 45, maxColorValue = 255)
## [1] "#F0D32D"
rgb(171, 58, 44, maxColorValue = 255)
## [1] "#AB3A2C"

Toepassen RGB kleuren: rgb(red, green, blue, alpha van 0 - 255)

mijnkleur01 <- rgb(49, 66, 144, max = 255, alpha = 255) 
mijnkleur02 <- rgb(74, 113, 192, max = 255, alpha =255) 
mijnkleur03 <- rgb(241, 242, 237, max = 255, alpha = 255) 
mijnkleur04 <- rgb(171, 58, 44, max = 255, alpha = 255) 
mijnkleur05 <- rgb(240, 211, 45, max = 255, alpha = 255) 


par(mfrow=c(1,4),las=1,lty=0,bg=(mijnkleur03))
barplot(1,axes=FALSE,col = mijnkleur01)
barplot(1,axes=FALSE,col = mijnkleur02) 
barplot(1,axes=FALSE,col = mijnkleur04)
barplot(1,axes=FALSE,col = mijnkleur05)
Figuur 153. RGBkleuren toepassen.

Figuur 153. RGBkleuren toepassen.

Hexidecimaal

par(mfrow=c(2, 2),las=1,lty=0,bg=("white"))
barplot(1,axes=FALSE, col ="#4682B4")
barplot(1,axes=FALSE, col ="#4682B480")# 80% transparant
barplot(1,axes=FALSE, col ="#4682B460")# 60% transparant
barplot(1,axes=FALSE, col ="#4682B430")# 30% transparant
Figuur 154. Hexidecimale kleurcodes toepassen.

Figuur 154. Hexidecimale kleurcodes toepassen.

Kleurentransparantie:

Kleurtransparantie kan worden toegepast in visualisaties waar de grafische elementen elkaar overlappen en de informatie (gedeeltelijk) kan worden bedekt.

# RGB en transparantie 0.2 tm 1.0
par(mfrow=c(2, 2),las=1,lty=0,bg=("black"))
barplot(1,axes=FALSE,col = rgb(1,1,0,0.2),main="RGB en tranparantie, alpha=0-1.")
barplot(1,axes=FALSE,col = rgb(1,1,0.5)) 
barplot(1,axes=FALSE,col = rgb(1,1,0,0.7))
barplot(1,axes=FALSE,col = rgb(1,1,0,1))
Figuur 155 a, b, c en d. RGB en transparantie

Figuur 155 a, b, c en d. RGB en transparantie

Transparantie in RGB kleuren

par(mfrow=c(2, 2),bg="#4D4D4D",fg="white",las=1,col.axis="white",cex=0.7)

mijnkleur01 <- rgb(0, 0, 255,max = 255,alpha = 10) # alpa=0 volledig transparant
mijnkleur02 <- rgb(0, 0, 255,max = 255,alpha = 70)
mijnkleur03 <- rgb(0, 0, 255,max = 255,alpha = 120)
mijnkleur04 <- rgb(0, 0, 255,max = 255,alpha = 255)# alpha =255 volledig ondoorzichtig

barplot(1,axes=FALSE,col = mijnkleur01,sub="alpha=10",col.sub="white",font=1,
        main="RGB transparantie\nmet alpha 0 - 255.",col.main="white") 
barplot(1,axes=FALSE,col = mijnkleur02,sub="alpha=70",col.sub="white",font=1)
barplot(1,axes=FALSE,col = mijnkleur03,sub="alpha=120",col.sub="white",font=1) 
barplot(1,axes=FALSE,col = mijnkleur04,sub="alpha=255",col.sub="white",font=1) 
Figuur 156 a, b, c en d. RGB en transparantie tussen 0 en 255.

Figuur 156 a, b, c en d. RGB en transparantie tussen 0 en 255.

Hexidecimaal & transparantie in %

par(mfrow=c(2, 2),fg="#ffffff",bg="#00008b",col.main="#ffffff")
barplot(1,axes=FALSE, col ="#4682B490",main="90% Transparant",border=NA)# 60% transparant
barplot(1,axes=FALSE, col ="#4682B460",main="60% Transparant",border=NA)# 30% transparant
barplot(1,axes=FALSE, col ="#4682B430",main="30% Transparant",border=NA)# 30% transparant
barplot(1,axes=FALSE, col ="#4682B400",main="0% Transparant")# 30% transparant
Figuur 157. Hexidecimale waarde en transparantie.

Figuur 157. Hexidecimale waarde en transparantie.

Verschillende paletten

par(mfrow=c(2,3),bg=("ghostwhite"),las=1)
x1 = 1:7
barplot(1:7,axes=FALSE, col=topo.colors(1))
barplot(1:7,axes=FALSE, col=topo.colors(2))
barplot(1:7,axes=FALSE, col=topo.colors(3))
barplot(x1,axes=FALSE, col=topo.colors(4))
barplot(x1,axes=FALSE, col=topo.colors(5))
barplot(x1,axes=FALSE, col=topo.colors(7))
Figuur 158. Palet: topo.colors.

Figuur 158. Palet: topo.colors.

par(mfrow=c(2, 2),las=1,lty=0,bg=("#000000"))

barplot(1:4,axes=FALSE, col=terrain.colors(1))
barplot(1:4,axes=FALSE, col=terrain.colors(2))
barplot(1:7,axes=FALSE,col=terrain.colors(7))
barplot(1:24,axes=FALSE,col=terrain.colors(24))
Figuur 159 a. Palet: terrain.colors.

Figuur 159 a. Palet: terrain.colors.

par(mfrow=c(2, 2),las=1,lty=0,bg=("#000000"))
barplot(1:4,axes=FALSE,col=heat.colors(1))
barplot(1:4,axes=FALSE,col=heat.colors(2))
barplot(1:4,axes=FALSE,col=heat.colors(3))
barplot(1:4,axes=FALSE,col=heat.colors(4))
Figuur 159 b. Palet: heat.colors.

Figuur 159 b. Palet: heat.colors.

par(mfrow=c(2, 2),las=1,lty=0,bg=("#000000"))
barplot(1:10,axes=FALSE,col=cm.colors(1))
barplot(1:10,axes=FALSE,col=cm.colors(2))
barplot(1:10,axes=FALSE,col=cm.colors(3))
barplot(1:10,axes=FALSE,col=cm.colors(10))
Figuur 159 c. Palet: col.colors.

Figuur 159 c. Palet: col.colors.

par(mfrow=c(2, 3),las=1,lty=0,bg=("ghostwhite"))
barplot(1:6,axes=FALSE,col=rainbow(1),main="6 kolommen\nin 1 kleur")
barplot(1:6,axes=FALSE,col=rainbow(2))
barplot(1:5,axes=FALSE,col=rainbow(5))
barplot(1:10,axes=FALSE,col=rainbow(10),main="10 kolommen in\n10 kleuren")
barplot(1:22,axes=FALSE,col=rainbow(22))
barplot(1:34,axes=FALSE,col=rainbow(34))
Figuur 160. Palet: rainbow (zonder.colors).

Figuur 160. Palet: rainbow (zonder.colors).

par(mfrow=c(2, 3),las=1,lty=0,bg=("ghostwhite"))
barplot(1:6,axes=FALSE,col=gray.colors(1),main="6 kolommen\nin 1 tint grijs")
barplot(1:6,axes=FALSE,col=gray.colors(2))
barplot(1:5,axes=FALSE,col=gray.colors(5))
barplot(1:10,axes=FALSE,col=gray.colors(10),main="10 kolommen in\n10 tinten grijs")
barplot(1:22,axes=FALSE,col=gray.colors(22))
barplot(1:34,axes=FALSE,col=gray.colors(34))
Figuur 161. Palet: gray.colors.

Figuur 161. Palet: gray.colors.

Eigen palet van 7 divergerende kleuren

vlagNederland <-c("#2c2d8f","#7669b0","#b4aad0","#f1f1f1","#ffb7a1","#ff7856","#ff1300") # 7 kleuren divergerend

temperatuur<-c(30,30,20,20,10,10,0,0,-10,-10,-20,-20,-30,-30)
par(las=1)
barplot(table(temperatuur),
        main="Temperatuur °Celsius",
        xlab="",
        ylab="Graden",
        border=NA,
        col=vlagNederland,horiz =TRUE,xaxt="n", ann=TRUE,space=c(0,0,0,0))
Figuur 162. Palet: vlagNederland. **Kleurconventie**: koud = blauw, rood is warm!!!! Een divergerend kleurpallet.

Figuur 162. Palet: vlagNederland. Kleurconventie: koud = blauw, rood is warm!!!! Een divergerend kleurpallet.

Kleuren van een lijngrafiek:

info opvragen in R met: ??USArrests


Dataset USArrests: Murder,Assault,Rape per 100.000; UrbanPop % stedelijke bevolking attach(USArrests)
x = 1:50 # x heeft een waarde van 1869 tot en met 2019
par(bty="l",las=1,col.lab="#999999",bg="#333333")
Murder <- c(USArrests$Murder)
Rape <- c(USArrests$Rape)
plot(Murder, type="l", col="#1565C0", ylim=c(min(Murder),max(50)), xlab="50 Staten",
     axes=FALSE,lwd=3,ylab="per 100.000 inwoners",ljoin=1)
lines(Rape, type="l", col="#ffb633", pch=22, lwd=3,ljoin=1)
axis(1,x,col="#999999", col.ticks="#999999", col.axis="#999999", cex.axis=0.8)
axis(2, col="#999999", col.ticks="#999999", col.axis="#999999", cex.axis=0.8)
title(main = "Moord- en Verkrachtingsarrestaties per staat\n(USA, 1973)", col.main="#999999",font.main=2,adj=0)
legend("topright", legend=c("Verkrachting", "Moord"),
       col=c("#ffb633", "#1565C0"), lty=1:1,lwd=3:3, cex=0.8,bty="n",text.font=2,text.col="#999999")
Figuur 163. Kleurenpalet voor lijngrafiek.

Figuur 163. Kleurenpalet voor lijngrafiek.

# variant:      ylim=c(min(Murder),max(Rape))
# standaard:    ylim=c(0,50)

Kleuren toekennen aan categorieën:elke categorie zijn eigen kleur.

(gecombineerd met variatie in transparantie: riskant voor de leesbaarheid!!!)

data2= matrix (1: 15, nrow = 3, byrow = TRUE) 

# de waarden zijn nu 1,2,3,4,5,6, slaat de waarden intern op als:
# rij 1 als 1,3,5 en rij 2 als 2,4,6. Het herordent ze voordat de matrix wordt gemaakt.

# colnames(data2)<-letters[1:2] # letters is een constante in R, in kleine letters 
colnames(data2)<-LETTERS[1:5] # LETTERS is een constante in R, in HOOFDLETTERS


par(mfrow=c(1, 2),las=1,lty=1,bg="#656363",fg="#ffffff")

barplot(data2,  beside=TRUE,  horiz=FALSE, col.lab = "#a9a9a9",
        col=c("#6699FF99","#6699FF59","#6699FF29"),   # twee laatste cijfers zijn de % transparantie
        las=1,main="5 Steden en 3 typen \nmisdrijven (x 1000)",
        xlab="5 Steden",ylab="Hoeveelheid x 1000",adj=0,col.axis="#ffffff",
        border=NA, col.main = "#a9a9a9")

abline(h=0,col="white") #teken y-as als lijn
abline(h=8, col="darkgray", lty=2, lwd=0.5)

legend("topleft", legend=c("Aanranding", "Inbraak","Geweldsdelict"),
       fill=c("#6699FF99", "#6699FF59","#6699FF29"),border=NA,bty="n",cex=0.6)

barplot(data2,  beside=TRUE,  horiz=TRUE,col.lab = "#a9a9a9",
        col=c("#6699FF99","#6699FF59","#6699FF29"),   # twee laatste cijfers zijn de % transparantie
        las=1,main="5 Steden en 3 typen \nmisdrijven (x 1000)",
        xlab="Hoeveelheid x 1000",ylab="5 Steden",adj=0,col.axis="#ffffff", 
        border=NA, col.main = "#a9a9a9")

abline(v=0, col="white") # teken y-as als lijn
abline(v=8, col="darkgray", lty=2, lwd=0.5)
Figuur 164. Kleurenpalet Kolom- en Staafgrafiek..

Figuur 164. Kleurenpalet Kolom- en Staafgrafiek..

Kleurensneltest

par(mfrow=c(2,4))
barchaan<-c("#c70131", "#d31b67","#cd429b", "#b765c7", "#9384e7", "#659df9", "#30b3fc", "#12c5f6")
barplot(1:8,
        main="Kleurpalet met 8 kleuren.",
        xlab="",
        ylab="Aantal Kleuren",
        border=NA,las=1,
        col=barchaan,horiz =TRUE,xaxt="n", ann=TRUE)

hsl01 <- c('#C80232', '#E02F4A', '#FF5066', '#AE2D3E', '#9B414A', '#521C22')
barplot(1:6,
        main="Kleurpalet met 6 kleuren.",
        xlab="",
        ylab="Aantal Kleuren",
        border=NA,las=1,
        col=hsl01,horiz =TRUE,xaxt="n", ann=TRUE)



colors01 <- c('#D87559', '#FCA869', '#EBB247', '#F0B11E', '#FFBE3C')
barplot(1:5,
        main="Kleurpalet met 5 kleuren.",
        xlab="",
        ylab="Aantal Kleuren",
        border=NA,las=1,
        col=colors01,horiz =TRUE,xaxt="n", ann=TRUE)

hsl<-c('#A78D5F','#E2B23C', '#657A2F', '#38D48B', '#70FCB2')
barplot(1:5,
        main="Kleurpalet met 5 kleuren.",
        xlab="",
        ylab="Aantal Kleuren",
        border=NA,las=1,
        col=hsl,horiz =TRUE,xaxt="n", ann=TRUE)
        
aland<-c("#312f2f","#989463","#b2aa6c","#e2bd89","#ebd1af")

# eerste en laatste kleur met sterk contrast!!!9.04
barplot(1:5,
        main="Kleurpalet met 8 kleuren.",
        xlab="",
        ylab="Aantal Kleuren",
        border=NA,las=1,
        col=aland,horiz =TRUE,xaxt="n", ann=TRUE)


glenngould01<-c("#ff674d","#e37c2e","#c28d1e","#9f9928","#7ca041","#58a35e","#33a47c","#04a396")

barplot(1:8,
        main="Kleurpalet met 8\n(gradiënt-)kleuren",
        xlab="",
        ylab="Aantal Kleuren",
        border=NA,las=1,
        col=glenngould01,horiz =TRUE,xaxt="n", ann=TRUE)   

wolkenlucht<-c("#ffffff","#DAEDF3","#C8D6E9","#9BB6D0","#4C77A2","#3B6893","#2C5780")
par(bg="#000000")
barplot(1:7,main="Kleurpalet Wolkenlucht met 6\n(sequentie-) kleuren.",
        col.main="#000000",xlab="",ylab="Aantal Kleuren",
        border=NA,las=1,
        col=wolkenlucht,horiz =TRUE,xaxt="n", ann=TRUE)
Figuur 165. Sneltest. Welk palet wordt gekozen? En op grond waarvan?

Figuur 165. Sneltest. Welk palet wordt gekozen? En op grond waarvan?

Er zijn feitelijk 3 soorten paletten nodig qua kleuropbouw voor een datavisualisatie.

  1. Kwalitatieve paletten (categoraal), kleur heeft geen vaste waarde of volgorde. Kleurgebruik bij categorieën zonder vast volgorde (landen, staten, rassen, gender) Elke kleur past bij een mogelijke waarde (kan een bonte verzameling kleuren zijn, maar wel visueel harmonieus!). Liever niet meer dan 8 - 10 kleuren toepassen.

  2. Sequentiële kleurenschema’s hebben een kleurverloop dat van helder naar donker of van donker naar licht gaat. De verlopen kunnen worden geclassificeerd of niet geclassificeerd. Geclassificeerde kleurenschema’s zijn getrapte verlopen, terwijl de niet-geclassificeerde een doorlopend verloop zijn. Ze kunnen het beste worden gebruikt om getallen te visualiseren die van lage naar hoge waarden gaan, het is het beste om donkerdere kleuren te gebruiken om de grotere getallen weer te geven.

  3. Divergerende kleurenschema’s hebben een kleurverloop dat aansluit bij een numerieke waarde met een betekenisvolle centrale waarde, zoals een natuurlijk” nulpunt. Aan beide zijden van het palet twee verschillende kleuren die getrapt overgaan naar een neutrale middenkleur.

Een harmonieus geheel van kleuren kan worden verkregen door kleuren te kiezen, die dicht bij elkaar liggen op de kleurencirkel, of de drie primaire kleuren: rood, geel en blauw (RGB). Een beeld wordt harmonieus als er gekozen wordt voor kleuren in dezelfde toonwaarde (alles licht, alles in een middentoon of alles in een donkere toon).

Figuur 165. Een gradientkleurpalet

Extra uitleg Kleurencirkel(s)

En mogelijk een kleur voor “aandacht en/of een kleur voor”waarschuwing"".

setwd("C:/Users/hdhar/iCloudDrive/DataVisualisatie2021/Module Big Data Analist/R/RMarkDown")
library(readxl)
Discoveries <- read_excel("Discoveries.xlsx")
#View(Discoveries)

PresentatieDataViz001<-c("#76a646","#a0bf7e","#c9d8b7","#f1f1f1","#fad2ab","#fab465","#f29705")#7 kleuren
PresentatieDataViz002<-c("#76264d","#91a736","#afa51d","#d0a001","#f29704")# 5 kleuren
PresentatieDataViz003<-c("#4472c4","#6687d0","#849ddc","#a1b3e8","#bccaf3","#d8e1ff")#6 kleuren
Gallipoli002<-c("#cbc086","#d9d0a9","#e5e0cc","#f1f1f1","#c0c9d7","#8fa3bd","#5d7fa4")# 7 kleuren - divergerend
Aandacht<-c("#d8e1ff","#d8e1ff","#4472c4","#d8e1ff","#d8e1ff","#d8e1ff")

par(las=1,mfrow=c(2,2))

hist(Discoveries$Ontdekkingen,col=PresentatieDataViz002,main="Categoraal Kleurpalet",xlab="Aantal Ontdekkingen van 1860 tot 1959.",ylab="Frequentie")
hist(Discoveries$Ontdekkingen,col=PresentatieDataViz003,main="Sequentieel Kleurpalet",xlab="Aantal Ontdekkingen van 1860 tot 1959.",ylab="Frequentie")
hist(Discoveries$Ontdekkingen,col=Gallipoli002,main="Divergerend Kleurpalet",xlab="Aantal Ontdekkingen van 1860 tot 1959.",ylab="Frequentie")
hist(Discoveries$Ontdekkingen,col=Aandacht,main="Kleurpalet met aandachtskleur\nafwijkend van de rest",xlab="Aantal Ontdekkingen van 1860 tot 1959.",ylab="Frequentie")
Figuur 166. Drie (mogelijk) 4 kleuren nodig.

Figuur 166. Drie (mogelijk) 4 kleuren nodig.

Een histogram in 1 kleur uitvoeren (één variabele). Met een grid in dezelfde kleur.

leeftijdNL<-c(19,19,19,20,20,20,21,20,20,22,21,22,23,19,19,19)

par(las=1)
hist(leeftijdNL, col = "#AB3A2C",main="Leeftijden van studentenpopulatie.",
     xlab="Leeftijd",ylab="Frequentie",border=NA)
grid(nx = NA, ny = NULL, lty = 2, col = "#AB3A2C", lwd = 0.2)
Figuur 167. Alle bins zijn van dezelfde categorie.

Figuur 167. Alle bins zijn van dezelfde categorie.

Kleurenbibliotheek: RColorBrewer

Sequentiele kleurpaletten

Geordende kleuren op basis van veel naar weinig (gradient).
De namen van de paletten zijn: Blues, BuGn, BuPu, GnBu, Greens, Greys, Oranges, OrRd, PuBu, PuBuGn, PuRd, Purples, RdPu, Reds, YlGn, YlGnBu YlOrBr, YlOrRd.

Kwalitatieve kleurpaletten

Passen goed bij nominale / kwalitatieve data, categorieën.
Zij impliceren geen verschillen tussen categorieën.
De namen van de paletten zijn: Accent, Dark2, Paired, Pastel1, Pastel2, Set1, Set2,Set3.

Divergerende kleurpaletten

Nadruk leggen op waarden in het middenbereik en aan beide uiteinden van het gegevensbereik.
De namen van de paletten zijn: BrBG, PiYG, PRGn, PuOr, RdBu, RdGy, RdYlBu, RdYlGn, Spectral.
#install.packages("RColorBrewer")
library(RColorBrewer)
# color = brewer.pal(6, "Paired")
# Sequential – Light colours for low data, dark for high data
# Diverging –  Light colours for mid-range data, low and high contrasting dark colours
# Qualitative – Colours designed to give maximum visual difference between classes

par(mfrow=c(1,3),las=1)
hist(Discoveries$Ontdekkingen,col=brewer.pal(6,"BuPu"),main="Kleurpalet sequentieel.",xlab="Aantal Ontdekkingen van 1860 tot 1959.")
hist(Discoveries$Ontdekkingen,col=brewer.pal(6,"Paired"),main="Kleurpalet categoriaal/kwantitatief.",xlab="Aantal Ontdekkingen van 1860 tot 1959.")
hist(Discoveries$Ontdekkingen,col=brewer.pal(6,"PuOr"),main="Kleurpalet divergerend.",xlab="Aantal Ontdekkingen van 1860 tot 1959.")
Figuur 168. Toepassing RColorBrewer.

Figuur 168. Toepassing RColorBrewer.

Vergelijkbare kleurbibliotheek

#install.packages("wesanderson")

library(wesanderson)

leeftijd<-c(16,17,18,19,17,18,18,17,18,19,18,16,17,18,19,18,16,18,18,21,16,17,18,19,22,23,16,17,18)

#table(leeftijd)

par(mfrow=c(2,2),las=1)

pal <- wes_palette(4, name = "Zissou1", type = "discrete")

barplot(table(leeftijd),
        main="Leeftijd van Nederlandse Studenten.",
        xlab="Aantal",
        ylab="Leeftijd",
        border="#55468c",
        col=pal,horiz = TRUE)
barplot(table(leeftijd),
        main="",
        xlab="Leeftijd",
        ylab="Aantal",
        border="#55468c",
        col=pal,horiz = FALSE)

pal2 <- wes_palette(16, name = "Zissou1", type = "continuous") # continue weergave van kleuren
barplot(table(leeftijd),
        main="",
        xlab="Aantal",
        ylab="Leeftijd",
        border="#55468c",
        col=pal2,horiz =TRUE)
barplot(table(leeftijd),
        main="",
        xlab="Leeftijd",
        ylab="Aantal",
        border="#55468c",
        col=pal2,horiz = FALSE)
Figuur 169. Toepassing kleurgebruik van Wes Anderon (filmmaker).

Figuur 169. Toepassing kleurgebruik van Wes Anderon (filmmaker).

Gereedschap voor het samenstellen van kleurpaletten

(“een greep uit een enorm aanbod!”)

Gereedschap

Data Color Picker Na het samenstellen van een palet kan dit worden gekopieerd naar o.a. R.

Gradient Generator Tool Een gradient kleurpalet samenstellen en naar o.a. R kopiëren.

gradient<-c("#1f005c","#260062","#3d0074", "#67008d","#ab00ad","#d10098","#f5006b","#ff1a3c", "#ff4e3a","#ff8953","#ffaa65","#ffb56b")

leeftijd<-c(16,17,18,19,17,18,18,17,18,19,18,24,25,26,27,22,23,24,25,26,26,26,16,17,18,19,18,16,18,18,21,16,17,18,19,22,23,16,17,16,24,25,26,27)
par(las=1)
eigenPalet <-c("#f1f1f1") 
barplot(table(leeftijd),
        main="Leeftijd van Nederlandse (geneeskunde) Studenten",
        xlab="Aantal Studenten",
        ylab="Leeftijd",
        border="#55468c",
        col=gradient,horiz = TRUE)
Figuur 170. Gradient kleurpalet (fictieve dataset!!!).

Figuur 170. Gradient kleurpalet (fictieve dataset!!!).

Adobe INC. Kuler Inclusief test voor geschiktheid van palet voor kleurenblinden,contrastcontrole(!) en de mogelijkheid om van een eigen foto/afbeelding een palet samen te stellen.)

Figuur 21. Kleurpalet gebaseerd op eigen foto. Contrast donkergroen en wit = 11.14: 1 ( meer dan 7 is goed). Het gemaakte kleurenpalet is geschikt voor alle vormen van kleurenblindheid.

Voorwaardelijk kleurgebruik

fill_colors <-c()
for(i in 1: length(mtcars$mpg)){
  if(mtcars$mpg[i] >30){
    fill_colors<-c(fill_colors,"#821122")
  }  else{
    fill_colors<-c(fill_colors,"#f1f1f1")
  }
}


x <- mtcars[order(mtcars$mpg),] # gesorteerd op mpg
x$cyl <- factor(x$cyl)
dotchart(mtcars$mpg,labels=row.names(x),cex=0.7,groups= x$cyl,
        main="Welke auto's rijden meer dan 30 mijl met een gallon brandstof?",
        xlab="Aantal Miles per Gallon",ylab="Auto's met aantal cylinders",frame=FALSE,las=1,col =fill_colors,xaxt="n", ann=TRUE)
Figuur 171. Accentueer deelverzameling (filtering) van een dataset.

Figuur 171. Accentueer deelverzameling (filtering) van een dataset.

fill_colors <-c()
for(i in 1: length(mtcars$mpg)){
  if(mtcars$mpg[i] <15){
    fill_colors<-c(fill_colors,"#821122")
  }  else{
    fill_colors<-c(fill_colors,"#f1f1f1")
  }
}


x <- mtcars[order(mtcars$mpg),] # gesorteerd op mpg
x$cyl <- factor(x$cyl)
dotchart(mtcars$mpg,labels=row.names(x),cex=0.7,groups= x$cyl,
        main="Welke auto's rijden minder dan 15 mijl met een gallon brandstof?",
        xlab="Aantal Miles per Gallon",ylab="Auto's met aantal cylinders",frame=FALSE,pch=21,las=1,col =fill_colors,xaxt="n", ann=TRUE)
Figuur 172. Accentueer deelverzameling (filtering) van een dataset.

Figuur 172. Accentueer deelverzameling (filtering) van een dataset.

library(readr)
PompHandle8SeptVerwijderd_2 <- read_delim("C:/Users/hdhar/iCloudDrive/DataVisualisatie2021/Module Big Data Analist/R/RMarkDown/PompHandle8SeptVerwijderd 2.csv", 
    ";", escape_double = FALSE, trim_ws = TRUE)
#View(PompHandle8SeptVerwijderd_2)

auteur <- c("© 2021 Hans den Hartog")

par(fg="#4A71c0",col.axis="#4A71C0",mar=c(5,5,5,5))
fill_colors <-c()
for(i in 1: length(PompHandle8SeptVerwijderd_2$Doden)){
  if(PompHandle8SeptVerwijderd_2$Doden[i] == 30){
    fill_colors<-c(fill_colors,"#821122")
  }  else{
    fill_colors<-c(fill_colors,"#4A71C099")
  }
}
barplot(PompHandle8SeptVerwijderd_2$Doden,ylim=c(0,120),border=NA,
        xlab = "Datum (21 augustus - 28 september 1854)", 
        col.main="#4A71c0", ylab = "",las=1,adj=0,
        col =fill_colors,names.arg=PompHandle8SeptVerwijderd_2$Dag,
        col.lab = "#4A71C0")
abline(v = 13.9,lty=3,col=("#821122"))
rect(10, 76, 26, 120, col="white",border = "white")
mtext("Op 8 september werd het\n handvat van de pomp verwijderd.",side=3,line=-5,col="#821122",font=2)
mtext("Aantal doden",side=3,line=1.2,at=-1,cex=1.1,col="#4A71C0")

mtext(auteur, side=1,line=3, cex=0.7, col="#4A71C099", adj=1)

mtext("Aantal choleradoden tijdens epidemie in Broadstreet (1854)\nSoho, Londen, naar John Snow.", 
      side=3,line=3,at=25,cex=1,col="#4A71C0")
Figuur 173. De epidemie was op 8 september al over zijn hoogtepunt heen.

Figuur 173. De epidemie was op 8 september al over zijn hoogtepunt heen.

Tijdens de Cholera-uitbraak ontwikkelde John Snow de hypothese dat de cholerabesmetting door het drinken van water uit een specifiek pomp de oorzaak was. De maatregel om het handvat van de pomp te verwijderen was op zich een juiste, om een uitbraak/epidemie af te remmen, maar werd te laat genomen, de uitbraak was al over zijn hoogtepunt heen. De risicogroepen waren al besmet, gestorven of gevlucht.

  1. Er is gebruikt gemaakt van “voorwaardelijk kleuren” om de aandacht te trekken naar de hoofdhandeling van deze grafiek.
  2. De labels zijn zo veel mogelijk horizontaal geplaatst.
  3. De verticale lijn is “bedekt” met een witte rechthoek, zodat de lijn binnen het kader wordt bedekt (workaround in R Basic).
  4. De titel bestaat uit 12 woorden, dat is echt wel het maximum.
  5. De labels zijn weergegeven op de x-as, de data (meervoud van datums) zijn met sprongen weergegeven.