We beginnen met een kleine dataset over de gemiddelde lengtegroei van Nederlandse jongens. In een korte R-sessie maken we eerst een lijst van de gemiddelde lengte (in centimeters) vanaf de leeftijd van 1 t/m 7 jaar. Vervolgens gebruiken we de functie plot()
om een eenvoudige grafiek van deze tijdreeks te maken.
> lengte <- c(76.6, 88.9, 98.1, 105.8, 113.1, 120.1, 126.6)
> plot(lengte)
We krijgen de volgende grafiek te zien in een grafiekvenster.
Merk op dat R al veel standaardkeuzes heeft gemaakt om de bovenstaande grafiek te produceren:
- er is een spreidingsdiagram gemaakt waarbij de lengtewaarden zijn uitgezet tegen hun index;
- horizontale en verticale bereiken zijn geselecteerd om de datapunten zo goed mogelijk in beeld te brengen;
- open cirkels werden gebruikt om datapunten voor te stellen;
- er wordt gebruik gemaakt van een standaard grootte voor de afbeelding;
- er is een standaardkleur voor de grafiek geselecteerd;
- het gebruikte lettertype voor tekstweergave is standaard;
- en nog veel meer standaardopties zijn toegepast.
Kijkend naar de grafiek die is gemaakt in het eerste voorbeeld, wil je misschien meer geschikte aslabels specificeren, en een titel of een ondertitel toevoegen. De argumenten die u nodig heeft in de functie om dit te doen zijn::
main
: de titel van het diagram
sub
: de ondertitel van het diagram
xlab
: het label langs de horizontale as
ylab
: het label langs de verticale as
Alle bovengenoemde argumenten worden opgegeven als een woord (reeks van karakters). In ons voorbeeld zou je de volgende instructie kunnen geven om een aangepaste en hopelijk verbeterde grafiek te verkrijgen:
> plot(lengte, main="gemiddelde lengte van jongens vs leeftijd.",
+ xlab="leeftijd (jaar)", ylab="lengte (cm)")
We hadden ook een variabele "leeftijd" kunnen introduceren en het spreidingsdiagram van het dataframe 'lengte vs leeftijd' op de volgende manier kunnen tekenen:
> lengte <- c(76.6, 88.9, 98.1, 105.8, 113.1, 120.1, 126.6)
> leeftijd <- 1:7
> df <- data.frame(leeftijd, lengte)
> plot(df) # alternatief: plot(x = leeftijd, y = lengte)
De argumenten main
, sub
, xlab
, and ylab
in de functie plot()
zijn geen grafische parameters die voor alle soorten grafieken kunnen worden ingesteld; ze kunnen alleen worden gespecificeerd als argumenten binnen de grafische instructie. Er zijn echter wel een reeks grafische parameters die je kunt gebruiken om de grafieken aan te passen. Bijvoorbeeld, je bent mogelijk niet tevreden met het vette lettertype en de grootte van de titel omdat dit naar jouw mening te veel aandacht trekt, of je wilt verschillende kleuren gebruiken voor de titel en de aslabels. Om je een idee te geven van hoe je het eerder gemaakte diagram op deze manier kunt aanpassen, zou de volgende instructie kunnen helpen:
> plot(lengte, main="gemiddelde lengte van jongens vs leeftijd.",
+ xlab="leeftijd (jaar)", ylab="lengte (cm)",
+ col = "darkblue", # kleur van datapunten data: donkerblauw
+ col.main = "blue", # kleur van lettertype voor de titel: blauw
+ font.main = 1, # normale tekststijl voor de titel
+ cex.main = 1, # normale lettergrootte voor de titel
+ col.lab = "darkblue" # kleur van datapunten data: donkerblauw
+ )
Deze instructie levert de volgende grafiek op:
Als je altijd de standaardgrootte voor de titel wilt gebruiken, kun je de volgende instructie eenmalig invoeren aan het begin van een R-sessie:
> par(cex.main = 1)
Het argument type
specificeert de visuele stijl van de plot. De meest gebruikte waarden voor dit argument zijn:
type = "p"
: Teken alleen de punten;
type = "l"
: Teken lijnstukken tussen punten;
type = "o"
: Teken lijnstukken over de punten heen;
type = "b"
: Teken beiden - punten en lijnstukken - maar niet over elkaar heen;
type = "h"
: Teken histogram-achtige verticale lijnstukken;
type = "s"
: Teken een trappenhuis, verticaal en horizontaal gaand.
De volgende instructies creëren één figuur waarin de verschillende diagramtypes zichtbaar worden gemaakt:
> par(mfcol=c(2,3)) # 2x3 matrix van diagrammen
> plot(lengte, xlab="leeftijd", type="p", main='type="p"')
> plot(lengte, xlab="leeftijd", type="l", main='type="l"')
> plot(lengte, xlab="leeftijd", type="o", main='type="o"')
> plot(lengte, xlab="leeftijd", type="b", main='type="b"')
> plot(lengte, xlab="leeftijd", type="h", main='type="h"')
> plot(lengte, xlab="leeftijd", type="s", main='type="s"')
Je kunt kenmerken van een grafiek wijzigen, afgezien van de titel, aslabels of het type van het diagram.
- Het symbool van een punt wijzigen:
pch
, De plot character parameter is een getal, meestal tussen 1 en 25. dat het grafische systeem informeert welk symbool moet worden gebruikt om de punten te tekenen ; zie onderstaande figuur.
- De grootte van het symbool wijzigen:
cex
. Deze parameter beschrijft de character expansion factor (i.e., vergrotingsfactor) voor de getekende symbolen. Bij verstek cex=1
, maar als je grotere symbolen in je grafiek wilt, moet je een grotere waarde specificeren, bijvoorbeeld 1.2, 1.5, 2 of enige andere waarden.
- het type van lijnen in een grafiek wijzigen:
lty
. De line type parameter beschrijft - nomen est omen - het type van de lijnstukken die getekend worden. Het kan ofwel een getal zijn of een woord uit onderstaande lijst.
- De lijndikte wijzigen:
lwd
. De line width parameter is gewoon een getal dat de breedte van de lijn aangeeft. De standaardwaarde is 1. Het is niet verrassend dat grotere waarden dikkere lijnen produceren en kleinere waarden dunnere lijnen. Probeer te experimenteren met verschillende waarden van lwd
en zie wat gebeurt.
- De kleur van punten en lijnen wijzigen:
col
. R heeft 657 ingebouwde kleuren. Je kunt alle kleurnamen zien door de instructie colors()
in de console in te voeren.
Hieronder staat de volledige tabel met namen van beschikbare kleuren.
white |
aliceblue |
antiquewhite |
antiquewhite1 |
antiquewhite2 |
antiquewhite3 |
antiquewhite4 |
aquamarine |
aquamarine1 |
aquamarine2 |
aquamarine3 |
aquamarine4 |
azure |
azure1 |
azure2 |
azure3 |
azure4 |
beige |
bisque |
bisque1 |
bisque2 |
bisque3 |
bisque4 |
black |
blanchedalmond |
blue |
blue1 |
blue2 |
blue3 |
blue4 |
blueviolet |
brown |
brown1 |
brown2 |
brown3 |
brown4 |
burlywood |
burlywood1 |
burlywood2 |
burlywood3 |
burlywood4 |
cadetblue |
cadetblue1 |
cadetblue2 |
cadetblue3 |
cadetblue4 |
chartreuse |
chartreuse1 |
chartreuse2 |
chartreuse3 |
chartreuse4 |
chocolate |
chocolate1 |
chocolate2 |
chocolate3 |
chocolate4 |
coral |
coral1 |
coral2 |
coral3 |
coral4 |
cornflowerblue |
cornsilk |
cornsilk1 |
cornsilk2 |
cornsilk3 |
cornsilk4 |
cyan |
cyan1 |
cyan2 |
cyan3 |
cyan4 |
darkblue |
darkcyan |
darkgoldenrod |
darkgoldenrod1 |
darkgoldenrod2 |
darkgoldenrod3 |
darkgoldenrod4 |
darkgray |
darkgreen |
darkgrey |
darkkhaki |
darkmagenta |
darkolivegreen |
darkolivegreen1 |
darkolivegreen2 |
darkolivegreen3 |
darkolivegreen4 |
darkorange |
darkorange1 |
darkorange2 |
darkorange3 |
darkorange4 |
darkorchid |
darkorchid1 |
darkorchid2 |
darkorchid3 |
darkorchid4 |
darkred |
darksalmon |
darkseagreen |
darkseagreen1 |
darkseagreen2 |
darkseagreen3 |
darkseagreen4 |
darkslateblue |
darkslategray |
darkslategray1 |
darkslategray2 |
darkslategray3 |
darkslategray4 |
darkslategrey |
darkturquoise |
darkviolet |
deeppink |
deeppink1 |
deeppink2 |
deeppink3 |
deeppink4 |
deepskyblue |
deepskyblue1 |
deepskyblue2 |
deepskyblue3 |
deepskyblue4 |
dimgray |
dimgrey |
dodgerblue |
dodgerblue1 |
dodgerblue2 |
dodgerblue3 |
dodgerblue4 |
firebrick |
firebrick1 |
firebrick2 |
firebrick3 |
firebrick4 |
floralwhite |
forestgreen |
gainsboro |
ghostwhite |
gold |
gold1 |
gold2 |
gold3 |
gold4 |
goldenrod |
goldenrod1 |
goldenrod2 |
goldenrod3 |
goldenrod4 |
gray |
gray0 |
gray1 |
gray2 |
gray3 |
gray4 |
gray5 |
gray6 |
gray7 |
gray8 |
gray9 |
gray10 |
gray11 |
gray12 |
gray13 |
gray14 |
gray15 |
gray16 |
gray17 |
gray18 |
gray19 |
gray20 |
gray21 |
gray22 |
gray23 |
gray24 |
gray25 |
gray26 |
gray27 |
gray28 |
gray29 |
gray30 |
gray31 |
gray32 |
gray33 |
gray34 |
gray35 |
gray36 |
gray37 |
gray38 |
gray39 |
gray40 |
gray41 |
gray42 |
gray43 |
gray44 |
gray45 |
gray46 |
gray47 |
gray48 |
gray49 |
gray50 |
gray51 |
gray52 |
gray53 |
gray54 |
gray55 |
gray56 |
gray57 |
gray58 |
gray59 |
gray60 |
gray61 |
gray62 |
gray63 |
gray64 |
gray65 |
gray66 |
gray67 |
gray68 |
gray69 |
gray70 |
gray71 |
gray72 |
gray73 |
gray74 |
gray75 |
gray76 |
gray77 |
gray78 |
gray79 |
gray80 |
gray81 |
gray82 |
gray83 |
gray84 |
gray85 |
gray86 |
gray87 |
gray88 |
gray89 |
gray90 |
gray91 |
gray92 |
gray93 |
gray94 |
gray95 |
gray96 |
gray97 |
gray98 |
gray99 |
gray100 |
green |
green1 |
green2 |
green3 |
green4 |
greenyellow |
grey |
grey0 |
grey1 |
grey2 |
grey3 |
grey4 |
grey5 |
grey6 |
grey7 |
grey8 |
grey9 |
grey10 |
grey11 |
grey12 |
grey13 |
grey14 |
grey15 |
grey16 |
grey17 |
grey18 |
grey19 |
grey20 |
grey21 |
grey22 |
grey23 |
grey24 |
grey25 |
grey26 |
grey27 |
grey28 |
grey29 |
grey30 |
grey31 |
grey32 |
grey33 |
grey34 |
grey35 |
grey36 |
grey37 |
grey38 |
grey39 |
grey40 |
grey41 |
grey42 |
grey43 |
grey44 |
grey45 |
grey46 |
grey47 |
grey48 |
grey49 |
grey50 |
grey51 |
grey52 |
grey53 |
grey54 |
grey55 |
grey56 |
grey57 |
grey58 |
grey59 |
grey60 |
grey61 |
grey62 |
grey63 |
grey64 |
grey65 |
grey66 |
grey67 |
grey68 |
grey69 |
grey70 |
grey71 |
grey72 |
grey73 |
grey74 |
grey75 |
grey76 |
grey77 |
grey78 |
grey79 |
grey80 |
grey81 |
grey82 |
grey83 |
grey84 |
grey85 |
grey86 |
grey87 |
grey88 |
grey89 |
grey90 |
grey91 |
grey92 |
grey93 |
grey94 |
grey95 |
grey96 |
grey97 |
grey98 |
grey99 |
grey100 |
honeydew |
honeydew1 |
honeydew2 |
honeydew3 |
honeydew4 |
hotpink |
hotpink1 |
hotpink2 |
hotpink3 |
hotpink4 |
indianred |
indianred1 |
indianred2 |
indianred3 |
indianred4 |
ivory |
ivory1 |
ivory2 |
ivory3 |
ivory4 |
khaki |
khaki1 |
khaki2 |
khaki3 |
khaki4 |
lavender |
lavenderblush |
lavenderblush1 |
lavenderblush2 |
lavenderblush3 |
lavenderblush4 |
lawngreen |
lemonchiffon |
lemonchiffon1 |
lemonchiffon2 |
lemonchiffon3 |
lemonchiffon4 |
lightblue |
lightblue1 |
lightblue2 |
lightblue3 |
lightblue4 |
lightcoral |
lightcyan |
lightcyan1 |
lightcyan2 |
lightcyan3 |
lightcyan4 |
lightgoldenrod |
lightgoldenrod1 |
lightgoldenrod2 |
lightgoldenrod3 |
lightgoldenrod4 |
lightgoldenrodyellow |
lightgray |
lightgreen |
lightgrey |
lightpink |
lightpink1 |
lightpink2 |
lightpink3 |
lightpink4 |
lightsalmon |
lightsalmon1 |
lightsalmon2 |
lightsalmon3 |
lightsalmon4 |
lightseagreen |
lightskyblue |
lightskyblue1 |
lightskyblue2 |
lightskyblue3 |
lightskyblue4 |
lightslateblue |
lightslategray |
lightslategrey |
lightsteelblue |
lightsteelblue1 |
lightsteelblue2 |
lightsteelblue3 |
lightsteelblue4 |
lightyellow |
lightyellow1 |
lightyellow2 |
lightyellow3 |
lightyellow4 |
limegreen |
linen |
magenta |
magenta1 |
magenta2 |
magenta3 |
magenta4 |
maroon |
maroon1 |
maroon2 |
maroon3 |
maroon4 |
mediumaquamarine |
mediumblue |
mediumorchid |
mediumorchid1 |
mediumorchid2 |
mediumorchid3 |
mediumorchid4 |
mediumpurple |
mediumpurple1 |
mediumpurple2 |
mediumpurple3 |
mediumpurple4 |
mediumseagreen |
mediumslateblue |
mediumspringgreen |
mediumturquoise |
mediumvioletred |
midnightblue |
mintcream |
mistyrose |
mistyrose1 |
mistyrose2 |
mistyrose3 |
mistyrose4 |
moccasin |
navajowhite |
navajowhite1 |
navajowhite2 |
navajowhite3 |
navajowhite4 |
navy |
navyblue |
oldlace |
olivedrab |
olivedrab1 |
olivedrab2 |
olivedrab3 |
olivedrab4 |
orange |
orange1 |
orange2 |
orange3 |
orange4 |
orangered |
orangered1 |
orangered2 |
orangered3 |
orangered4 |
orchid |
orchid1 |
orchid2 |
orchid3 |
orchid4 |
palegoldenrod |
palegreen |
palegreen1 |
palegreen2 |
palegreen3 |
palegreen4 |
paleturquoise |
paleturquoise1 |
paleturquoise2 |
paleturquoise3 |
paleturquoise4 |
palevioletred |
palevioletred1 |
palevioletred2 |
palevioletred3 |
palevioletred4 |
papayawhip |
peachpuff |
peachpuff1 |
peachpuff2 |
peachpuff3 |
peachpuff4 |
peru |
pink |
pink1 |
pink2 |
pink3 |
pink4 |
plum |
plum1 |
plum2 |
plum3 |
plum4 |
powderblue |
purple |
purple1 |
purple2 |
purple3 |
purple4 |
red |
red1 |
red2 |
red3 |
red4 |
rosybrown |
rosybrown1 |
rosybrown2 |
rosybrown3 |
rosybrown4 |
royalblue |
royalblue1 |
royalblue2 |
royalblue3 |
royalblue4 |
saddlebrown |
salmon |
salmon1 |
salmon2 |
salmon3 |
salmon4 |
sandybrown |
seagreen |
seagreen1 |
seagreen2 |
seagreen3 |
seagreen4 |
seashell |
seashell1 |
seashell2 |
seashell3 |
seashell4 |
sienna |
sienna1 |
sienna2 |
sienna3 |
sienna4 |
skyblue |
skyblue1 |
skyblue2 |
skyblue3 |
skyblue4 |
slateblue |
slateblue1 |
slateblue2 |
slateblue3 |
slateblue4 |
slategray |
slategray1 |
slategray2 |
slategray3 |
slategray4 |
slategrey |
snow |
snow1 |
snow2 |
snow3 |
snow4 |
springgreen |
springgreen1 |
springgreen2 |
springgreen3 |
springgreen4 |
steelblue |
steelblue1 |
steelblue2 |
steelblue3 |
steelblue4 |
tan |
tan1 |
tan2 |
tan3 |
tan4 |
thistle |
thistle1 |
thistle2 |
thistle3 |
thistle4 |
tomato |
tomato1 |
tomato2 |
tomato3 |
tomato4 |
turquoise |
turquoise1 |
turquoise2 |
turquoise3 |
turquoise4 |
violet |
violetred |
violetred1 |
violetred2 |
violetred3 |
violetred4 |
wheat |
wheat1 |
wheat2 |
wheat3 |
wheat4 |
whitesmoke |
yellow |
yellow1 |
yellow2 |
yellow3 |
yellow4 |
yellowgreen |
> plot(lengte, main="gemiddelde lengte van jongens vs leeftijd.",
+ xlab="leeftijd (jaar)", ylab="lengte (cm)",
+ type = "o", # lijnstukken over punten heen
+ lty = "dotted", # gestippelde lijnstukken
+ pch = 16, # gesloten cirkel voor een datapunt
+ cex = 2, # dubbele grootte
+ col = "darkblue", # kleur van punten en lijnen: donkerblauw
+ cex.axis = 0.8, # kleiner lettertype voor aslabels
+ col.lab = "darkblue", # donkerblauwe kleur voor aslabels
+ col.main = "blue") # blauwe kleur voor titel
R biedt mogelijkheden om de assen aan te passen
- Wijziging van de bereiken van de assen:
xlim
, ylim
. Over het algemeen doet R een behoorlijk goede poging om geschikte horizontale en verticale bereiken te raden. Je kunt echter keuzes overschrijven door de argumenten xlim
en ylim
aan te passen Bijvoorbeeld, de volgende code produceert een redelijke grafiek van de tangensfunctie:
> x_waarden <- seq(from = 0, to = 10, by = 0.001)
> y_waarden <- tan(x_waarden)
> plot(x = x_waarden, y = y_waarden, pch = 20, cex = 0.8, col = "blue", ylim = c(-10,10))
Zonder specificatie van het grafiekbereik zou je een weinig informatieve grafiek krijgen, gedomineerd door extreme waarden.
- Onderdrukking van labels:
ann
. Stel ann = FALSE
als je niet wilt dat R een tekst voor een titel, ondertitel of labels bij de assen opstelt.
- Onderdrukking van het tekenen van assen. Stel
axes = FALSE
als je niet wilt dat R assen met streepjes en getallen tekent. In dit geval kun je nog steeds een kleine rand om de grafiek laten tekenen door frame.plot = TRUE
in te stellen.
- Logaritmische schaling van assen:
log="x"
, log="y"
, en log="xy" zorgen ervoor dat de x, y of eide assen logaritmische schaling gebruiken. Dit werkt voor veel, maar niet alle types van grafieken.
Als je de verticale as wilt weglaten, maar de horizontale as wilt behouden, stel dan yaxt = "none"
(of "n"
als afkorting van "none"
) in. Gebruik xaxt
als optie voor het weglaten van een horizontale as.