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:
Hue. Onze ogen zien alleen rood, groen en blauw licht. En alle mengvormen daarvan.
Lightness. De interpretatie van de reflectie van licht van een oppervlak. Dit is de belangrijkste “drager” voor onze perceptie van de drie kleuren (RGB).
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.
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.
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"
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.
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.
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
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
# variant: ylim=c(min(Murder),max(Rape))
# standaard: ylim=c(0,50)
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..
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?
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.
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.
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
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.
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.
#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.
#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).
(“een greep uit een enorm aanbod!”)
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!!!).
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.)
Contrast donkergroen en wit = 11.14: 1 ( meer dan 7 is goed). Het gemaakte kleurenpalet is geschikt voor alle vormen van kleurenblindheid.
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.
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.
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.
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.