Werken met R bij wiskunde: Grafieken van functies
Grafieken met ggplot2
Het ggplot2
-pakket is bedoeld voor data visualisatie, maar het kan natuurlijk ook gebruikt worden voor het tekenen van grafieken van functies. Voor data visualisatie bestaat geen universele classificatie, maar onder grafieken, kaarten, schema's, enzovoorts, is een grafiek de meest gestructureerde vorm. Specifiek kunnen we een grafiek in de volgende drie essentiële componenten indelen:
data
: de gegevensverzameling die bestaat uit bepaalde variabelen die we in kaart willen brengen.geom
: het geometrisch object waar het om gaat. Dit verwijst naar grafische primitieven die
we in de grafiek kunnen gebruiken, zoals punten, lijnen, staven, etc.aes
: esthetisch (‘aes-thetic’) attribuut van het geometrisch object dat we aan de grafiek kunnen toevoegen. Bijvoorbeeld, \(x,y\)-positie, kleur, vorm en grootte. Elk toegekend attribuut kan worden toegekend aan een variabele in onze dataset. Als ze niet worden toegekend aan variabelen, gelden de verstekwaarden.
Andere componenten in een grafiek die we kunnen controleren zijn o.a.
- doorsneden die een grafiek in deelgrafieken verdelen;
- statistische transformaties zoals het samenbrengen tot waarden in een histogram;
- coördinatensystemen (bijvoorbeeld rechthoekige of sferische coördinaten);
- schalen die bepalen hoe in een grafiek de gegevens aan een uiterlijk gekoppeld worden. Om de koppeling te veranderen gebruik je aangepaste schalen. Dit kan schaling van de coördinaatassen betreffen, maar ook kleuring, opvulling, vorm en afmeting;
- positie aanpassingen;
- labels en legenda.
Allereerst moet het ggplot2
-pakket geïnstalleerd zijn met alle afhankelijke pakketten erbij en dan is het als volgt beschikbaar te maken in een sessie:
> library("ggplot2")
Need help getting started? Try the cookbook for R:
http://www.cookbook-r.com/Graphs/
Natuurlijk heeft het zin de voorbeelden op de website http://www.cookbook-r.com/Graphs/ te bekijken of nog beter de website https://ggplot2.tidyverse.org/ te raadplegen.
In het eerste voorbeeld gebruiken we grafische primitieven om een eenvoudige grafiek te maken van punten verbonden met stippellijnen. Het R script:
library("ggplot2")
t <- seq(from=0, to=1, by=0.2)
y <- t^2
dataset <- data.frame(t, y)
fig <- ggplot(data=dataset, aes(t,y)) +geom_line(color = "blue", linetype = "dashed", size = 1.25) +
geom_point(color = "red", shape = 16, size = 3)
print(fig)
levert de volgende figuur op:
In het tweede voorbeeld illustreren we hoe grafieken van twee functies in één figuur gecombineerd kunnen worden. Om de grafieken van functies te maken gebruiken we in het onderstaande R script de stat_function
functie en geen grafische primitieven.
library("ggplot2")
F1 <- function(t) { t * exp(-t) }
F2 <- function(t) { t^2 * exp(-t) }
fig <- ggplot(data.frame(x = c(0, 10)), aes(x = x)) +
stat_function(fun = F1, n = 100, aes(colour = "F1"), size = 1.25) +
stat_function(fun = F2, n = 100, aes(colour = "F2"), size = 1.25) +
scale_x_continuous(name = "t",
breaks = seq(from=0, to=10, by=2), # streepjes langs x-as
limits = c(0, 10)) + # domein
scale_y_continuous(name = "y(t)",
breaks = seq(from=0, to=0.55, by=0.1), # y-as tickmarks
limits = c(0, 0.55)) + # bereik
ggtitle("Grafieken van 2 functies") +
scale_colour_manual("Functies: ", values = c("deeppink", "dodgerblue3")) +
theme_bw() + # witte achtergrond met raster
theme(legend.position = "top") # legenda bovenaan
print(fig) # toon de figuur
Het resultaat ziet er dan als volgt uit: